Hướng dẫn remove single letter words python - xóa các từ đơn trong python

Tôi muốn xóa bất kỳ chữ cái nào từ một chuỗi trong Python.

Ví dụ:

input: 'z 23rwqw a 34qf34 h 343fsdfd'
output: '23rwqw 34qf34 343fsdfd'

Đã cố gắng tìm ra một thời gian với Regex mà không thành công. Tôi biết cách cắt mọi thứ từ một số char/biểu tượng nhất định thành hai mảnh, nhưng không phải là những gì tôi đang cố gắng làm.

Tôi đã mày mò

re.sub[r'^[^ ]*', '', text]

Hỏi ngày 21 tháng 9 năm 2015 lúc 23:13Sep 21, 2015 at 23:13

KubiK888KubiK888KubiK888

4.12914 Huy hiệu vàng56 Huy hiệu bạc110 Huy hiệu đồng14 gold badges56 silver badges110 bronze badges

0

>>> ' '.join[ [w for w in input.split[] if len[w]>1] ]
'23rwqw 34qf34 343fsdfd'

Đã trả lời ngày 21 tháng 9 năm 2015 lúc 23:17Sep 21, 2015 at 23:17

SAITSAITSait

18.3K17 Huy hiệu vàng69 Huy hiệu bạc98 Huy hiệu Đồng17 gold badges69 silver badges98 bronze badges

0

import re
text = "z 23rwqw a 34qf34 h 343fsdfd"
print re.sub[r'[?:^| ]\w[?:$| ]', ' ', text].strip[]

hoặc

tmp = re.sub[r'\b\w\b', ' ', input]
print re.sub[r'\s{2,}', ' ', tmp].strip[]

Đã trả lời ngày 21 tháng 9 năm 2015 lúc 23:30Sep 21, 2015 at 23:30

Tôi hy vọng có một cách Regex gọn gàng hơn thế này, nhưng:

>>> import re
>>> text = 'z 23rwqw a 34qf34 h 343fsdfd'

>>> re.sub['[\\b[A-Za-z] \\b|\\b [A-Za-z]\\b]', '', text]
'23rwqw 34qf34 343fsdfd'

Đó là một ranh giới từ, một chữ cái, một không gian và một ranh giới từ. Nó đã tăng gấp đôi để nó có thể khớp với một ký tự duy nhất ở đầu hoặc cuối chuỗi

re.sub[r'^[^ ]*', '', text]
4 và
re.sub[r'^[^ ]*', '', text]
5 không để lại khoảng trống, và một ký tự ở giữa
re.sub[r'^[^ ]*', '', text]
6 để lại một không gian.

Đã trả lời ngày 21 tháng 9 năm 2015 lúc 23:28Sep 21, 2015 at 23:28

Tôi đã có một vấn đề tương tự và đã đưa ra giải pháp Regex sau:

import re
pattern = r"[[?

Bài Viết Liên Quan

Chủ Đề