簡體   English   中英

如何刪除尾隨的非字母字符

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

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