更具体地说,我想在任何非字母数字字符上拆分字符串,但是如果分隔符不是我要保留的空格。也就是说,输入:
my_string = 'Hey, I\'m 9/11 7-11'
我想得到:
['Hey' , ',' , 'I' , "'" , 'm', '9' , '/' , '11', '7' , '-' , '11']
没有空格作为列表元素。
我尝试了以下内容:
re.split('([/\'\-_,.;])|\s', my_string)
但是输出:
['Hey', ',', '', None, 'I', "'", 'm', None, '9', '/', '11', None, '7', '-', '11']
如果没有“不必要的”迭代,我该如何解决这个问题?
另外我在逃避反斜杠字符方面遇到了一些麻烦,因为'\\\\'
似乎没有用,有关如何解决此问题的任何想法?
非常感谢。
答案 0 :(得分:3)
您可以使用
import re
my_string = "Hey, I'm 9/11 7-11"
print(re.findall(r'\w+|[^\w\s]', my_string))
# => ['Hey', ',', 'I', "'", 'm', '9', '/', '11', '7', '-', '11']
请参阅Python demo
\w+|[^\w\s]
正则表达式匹配1 +单词字符(字母,数字,_
符号)或单词和空格字符以外的单个字符。
顺便说一句,要将反斜杠与正则表达式匹配,您需要在原始字符串文字(\\
)中使用r'\\'
或在常规字符串中使用4个反斜杠('\\\\'
)。建议使用原始字符串文字在Python中定义正则表达式模式。