如何删除尾随的非alpha字符

2024-10-04 11:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

import re

s = 'Sarah Ruthers#6'
output = re.sub("[^\\w]", "", s)

print output

上面删除了所有的alpha字符;我只想删除最后一个alpha字符(字母类型字符)后面的任何字符;例如,删除最后一个alpha字符后面的任何字符。你知道吗

也就是说

要简单输出:

Sarah Ruthers

上面的My regex;输出SarahRuthers(删除空格)


Tags: importalphare类型outputmy字母字符
3条回答
output = re.sub("[^a-zA-Z]+$", "", s)

\w是“单词字符”,包括字母数字(字母、数字)加下划线(389;)。你知道吗

假设您只需要在末尾保留大小写字母:

output = re.sub("[^A-Za-z ]+$", "", s)

在末尾锚定模式,并使用正确的字符类:

output = re.sub(r"[\W\d_]+$", "", s)

这将删除字符串末尾所有非字母字符的一次运行;$锚点限制范围,[\W\d_]正确匹配非字母,而不仅仅是非单词字符(单词字符包括数字和下划线字符)。你知道吗

我还将regex设置为原始字符串(对于regex模式,您应该始终这样做),这样就不需要使用双反斜杠。你知道吗

请注意,虽然[^a-zA-Z]可以替换[\W\d_],但我强烈建议[\W\d_]而不是[^a-zA-Z],因为前者是Unicode友好的,而后者则不是;例如,如果您的文本是'résumé',则使用[^a-zA-Z]会去掉后面的é[\W\d_]不会

相关问题 更多 >