更具体地说,我想在任何非alpha-数字字符上拆分一个字符串,但如果分隔符不是空白,我想要对其进行分割。也就是说,对于输入:
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']我如何在没有“不必要”迭代的情况下解决这个问题?
此外,我在转义反斜杠字符方面也有一些困难,因为'\\\\'似乎不起作用,对于如何也解决这个问题,有什么想法吗?
非常感谢。
发布于 2017-04-25 20:57:32
你可以用
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演示
\w+|[^\w\s]正则表达式匹配1+单词字符(字母、数字、_符号)或单个字符,而不是单词和空格字符。
顺便说一下,要将反斜杠与regex匹配,需要在原始字符串文本( \\ )中使用r'\\',在普通字符串中使用4个反斜杠('\\\\')。建议使用原始字符串文字来定义Python中的regex模式。
https://stackoverflow.com/questions/43620776
复制相似问题