[英]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.