簡體   English   中英

Python:只保留字符串中的字母

[英]Python: keep only letters in string

從字符串中刪除不在字母表中的所有字符的最佳方法是什么? 我的意思是,刪除所有空格、標點符號、括號、數字、數學運算符..

例如:

input: 'as32{ vd"s k!+'
output: 'asvdsk'

您可以使用re ,但實際上並不需要。

>>> s = 'as32{ vd"s k!+'
>>> ''.join(x for x in s if x.isalpha())
'asvdsk'    
>>> filter(str.isalpha, s) # works in python-2.7
'asvdsk'
>>> ''.join(filter(str.isalpha, s)) # works in python3
'asvdsk'

如果要使用正則表達式,這應該更快

import re
s = 'as32{ vd"s k!+'
print re.sub('[^a-zA-Z]+', '', s)

打印'asvdsk'

這是一種使用 ASCII 范圍來檢查字符是否在大寫/小寫字母表中的方法(如果是,則將其附加到字符串中):

s = 'as32{ vd"s k!+'
sfiltered = ''

for char in s:
    if((ord(char) >= 97 and ord(char) <= 122) or (ord(char) >= 65 and ord(char) <= 90)):
        sfiltered += char

變量sfiltered將顯示結果,如預期的那樣是'asvdsk'

這個簡單的表達式可以獲取所有字母,包括非 ASCII 字母 ok t áàãéèêçĉ... 以及更多用於多種語言的字母。

r"[^\W\d]+"

它的意思是“獲取一個或多個不是“非單詞字符”或數字的字符序列。

如果您想保留世界各地許多語言中使用的 áàãéèêçĉ 等字符,請嘗試以下操作:

import re
print re.sub('[\W\d_]+', yourString)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM