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

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

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

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

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"((?<=^)|(?<= )).((?=$)|(?= ))"
text = "z 23rwqw a 34qf34 h 343fsdfd"
print(re.sub("\s+", " ", re.sub(pattern, '', text).strip()))
#23rwqw 34qf34 343fsdfd

Giải trình

  • re.sub(r'^[^ ]*', '', text)
    
    7 và
    re.sub(r'^[^ ]*', '', text)
    
    8 lần lượt là những cái nhìn để bắt đầu chuỗi và không gian. Khớp với một trong hai điều kiện này bằng cách sử dụng
    re.sub(r'^[^ ]*', '', text)
    
    9 (hoặc).
  • >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    0 khớp với bất kỳ ký tự nào
  • >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    1 tương tự như điểm đạn đầu tiên, ngoại trừ nó là một cái nhìn trước cho phần cuối của chuỗi hoặc một không gian.

Cuối cùng gọi

>>> ' '.join( [w for w in input.split() if len(w)>1] )
'23rwqw 34qf34 343fsdfd'
2 để ngưng tụ nhiều không gian với một không gian.

Đã trả lời ngày 3 tháng 4 năm 2018 lúc 22:24Apr 3, 2018 at 22:24

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

Paultpaultpault

39.2K13 Huy hiệu vàng100 Huy hiệu bạc142 Huy hiệu đồng13 gold badges100 silver badges142 bronze badges

test_str = 'sridevi shri shree sri gotshree.s z as shrishree a.'
re.sub('\s*\\b([a-z]|[a-z]{2})\\b', '', test_str)

'Sridevi Shri Shree Sri Gotshree. Shrishree. '

Đã trả lời ngày 22 tháng 2 lúc 13:08Feb 22 at 13:08

joel.wilsonjoel.wilsonjoel.wilson

8.0335 Huy hiệu vàng27 Huy hiệu bạc45 Huy hiệu Đồng5 gold badges27 silver badges45 bronze badges

thử cái này;

(?

Đã trả lời ngày 28 tháng 1 năm 2020 lúc 6:56Jan 28, 2020 at 6:56

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

1

Các phương pháp sau được sử dụng để loại bỏ một ký tự cụ thể khỏi một chuỗi trong Python.

  1. Bằng cách sử dụng phương thức
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    3
  2. Bằng cách sử dụng hàm
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    4
  3. Bằng cách sử dụng
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    5 và
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    6
  4. Bằng cách sử dụng
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    7 và
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    8
  5. Bằng cách sử dụng phương thức
    >>> ' '.join( [w for w in input.split() if len(w)>1] )
    '23rwqw 34qf34 343fsdfd'
    
    9

Lưu ý rằng chuỗi là bất biến trong Python. Vì vậy, chuỗi ban đầu vẫn không thay đổi và một chuỗi mới được trả về bởi các phương thức này.


1. Loại bỏ ký tự khỏi chuỗi bằng phương pháp ngây thơ

Trong phương pháp này, chúng ta phải chạy một vòng lặp và nối các ký tự và xây dựng một chuỗi mới từ các ký tự hiện tại ngoại trừ khi chỉ mục là n. (trong đó n là chỉ số của ký tự sẽ bị xóa)

input_str = "DivasDwivedi"
  
# Printing original string  
print ("Original string: " + input_str) 
  
result_str = "" 
  
for i in range(0, len(input_str)): 
    if i != 3: 
        result_str = result_str + input_str[i] 
  
# Printing string after removal   
print ("String after removal of i'th character : " + result_str)

Output::

Chuỗi gốc: Chuỗi divasdwivingi sau khi loại bỏ ký tự I Ithth: divsdwivingi
String after removal of i’th character : DivsDwivedi


2. Loại bỏ ký tự khỏi chuỗi bằng phương thức thay thế ()

re.sub(r'^[^ ]*', '', text)
0

Output::

Chuỗi gốc: Kỹ thuật Chuỗi sau khi loại bỏ ký tự: Enginring Chuỗi sau khi loại bỏ ký tự: Tiếng vang
The string after removal of character: Enginring
The string after removal of character: Enginering


3. Loại bỏ ký tự khỏi chuỗi bằng cách sử dụng cắt và nối

re.sub(r'^[^ ]*', '', text)
1

Output::

Chuỗi gốc: Chuỗi kỹ thuật sau khi loại bỏ ký tự: Enineering
String after removal of character: Enineering


4. Loại bỏ ký tự khỏi chuỗi bằng phương thức Jof () và danh sách hiểu biết

Trong kỹ thuật này, mọi yếu tố của chuỗi được chuyển đổi thành một phần tử tương đương của danh sách, sau đó mỗi phần trong số chúng được nối để tạo thành một chuỗi không bao gồm ký tự cụ thể sẽ được xóa.

re.sub(r'^[^ ]*', '', text)
2

Output::

Chuỗi gốc: Chuỗi kỹ thuật sau khi loại bỏ ký tự: Enineering
String after removal of character: Enineering


5. Loại bỏ ký tự khỏi chuỗi bằng phương thức dịch ()

re.sub(r'^[^ ]*', '', text)
3

Đầu ra::

Kỹ sưDiscipline


Người giới thiệu

  • Chuỗi Python
  • Loại bỏ python của ký tự khỏi một chuỗi