如何用re.split()分割所有特殊字符

时间:2014-01-09 15:09:10

标签: python regex

我正在尝试使用re.split()包中的import re分割任何特殊字符。这是我到目前为止所做的,但似乎还没有真正解决。有什么想法吗?

word = [b for b in re.split(r'\`\-\=\~\!\@\#\$\%\^\&\*\(\)\_\+\[\]\{\}\;\'\\\:\"\|\<\,\.\/\>\<\>\?', a)]

3 个答案:

答案 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', '']