我正在尝试使用re.split()
包中的import re
分割任何特殊字符。这是我到目前为止所做的,但似乎还没有真正解决。有什么想法吗?
word = [b for b in re.split(r'\`\-\=\~\!\@\#\$\%\^\&\*\(\)\_\+\[\]\{\}\;\'\\\:\"\|\<\,\.\/\>\<\>\?', a)]
答案 0 :(得分:11)
不是枚举所有“特殊”字符,而是可以更容易地创建一个字符类,其中不要拆分并使用^
字符将其反转。
例如,re.split(r"[^\w\s]", s)
将在课程\w
或\s
([a-zA-Z0-9_]
和{{1}中的不的任何字符处拆分分别参见here了解更多信息)。但请注意,[ \t\n\r\f\v]
类中包含_
字符,因此您可能希望明确指定所有“常规”字符,例如\w
。
re.split(r"[^a-zA-Z0-9\s]", s)
答案 1 :(得分:8)
使用字符类:
re.split(r'[`\-=~!@#$%^&*()_+\[\]{};\'\\:"|<,./<>?]', a)
答案 2 :(得分:3)
当您遇到不是字母数字的字符时,您可能希望拆分字符串。为此,您可以在正则表达式中使用元字符\w
,这意味着“每个字母a-ZA-Z0-9”并与^
匹配,如下所示:
>>> re.split(r'[^\w]', 'toto"t"o/t!')
['toto', 't', 'o', 't', '']