[英]how to remove trailing non-alpha characters
import re
s = 'Sarah Ruthers#6'
output = re.sub("[^\\w]", "", s)
print output
以上內容刪除了所有字母字符; 我只想刪除最后一個字母(字母類型字符)之后的所有字符; 或尾隨最后一個字母字符。
即 Sarah Ruthers#6
簡單輸出:
Sarah Ruthers
我上面的正則表達式; 輸出SarahRuthers
(刪除空間)
output = re.sub("[^a-zA-Z]+$", "", s)
最后將您的樣式錨定,並使用正確的字符類:
output = re.sub(r"[\W\d_]+$", "", s)
這將刪除字符串末尾的所有非字母字符的單次運行; $
錨點限制范圍,並且[\\W\\d_]
正確匹配非字母,而不僅僅是非單詞字符(單詞字符包括數字和下划線字符)。
我還使正則表達式成為原始字符串(無論如何,對於正則表達式模式都應始終執行此操作),從而無需將反斜杠加倍。
請注意,雖然[^a-zA-Z]
可以代替您的特定情況下的[\\W\\d_]
,但我強烈建議[\\W\\d_]
勝過[^a-zA-Z]
因為前者是Unicode友好的,而后者不是; 例如,如果您的文本是'résumé'
,則使用[^a-zA-Z]
將刪除結尾的é
,而[\\W\\d_]
則不會。
\\w
是“文字字符”,包括字母數字(字母,數字)和下划線(_)。
假設您只需要在結尾處保留大寫和小寫字母:
output = re.sub("[^A-Za-z ]+$", "", s)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.