我试图用“”替换字符串中所有非ASCII字符(重音符号),然后替换所有以数字结尾的单词。在
我认为r'\W |\b[^a-z]*[^a-z]\b'会这么做,因为我认为它说“删除非ASCII字符,或者删除以0个或更多个非字母开头、以非字母结尾的整个单词”。我所说的非字母是指所有不匹配的符号。然而,“hey2”,“a2”,“1a3”仍然存在
#remove all these words:
re.sub(r'\W|\b[^a-z]*[^a-z]\b',' ', "1 123 - hey2 a2 1a3 ".lower())
>>>' hey2 a2 1a3 '
#keep all these words:
re.sub(r'\W|\b[^a-z]*[^a-z]\b',' ', "1st first a2a 2bb esta' ".lower())
>>>'1st first a2a 2bb esta ' #This works
我错过了什么?在
似乎要删除任何非单词字符(与
\W
模式匹配)和任何以数字结尾的“单词”(字母/数字序列_
,\w
模式)。在所以,你可以用
请注意,如果您在python2.x中处理Unicode字符串,则需要传递}识别Unicode。在
re.UNICODE
标志以使\W
和{图案细节
\W
-非单词字符(不是字母、数字或_
的任何字符)|
-或\b
-前导词边界\w*
-零个或多个(*
)字字符\d
-一个数字\b
-一个尾随的单词边界。请注意,如果要将}替换为{}。在
_
字符视为非单词字符,请将\W
替换为[\W_]
,并将{你少了一个(点)。在“*”之前。在
“.*”表示0个或更多个字符。在
相关问题 更多 >
编程相关推荐