如何在不同的分隔符上拆分字符串,但在输出中保留一些所述分隔符? (标记字符串)
How do I split a string on different delimiters, but keeping on the output some of said delimiters? (Tokenize a string)
更具体地说,我想在任何非字母数字字符上拆分一个字符串,但在分隔符不是白色的情况下 space 我想保留它。即输入:
my_string = 'Hey, I\'m 9/11 7-11'
我想得到:
['Hey' , ',' , 'I' , "'" , 'm', '9' , '/' , '11', '7' , '-' , '11']
没有白色space作为列表元素。
我试过以下方法:
re.split('([/\'\-_,.;])|\s', my_string)
但输出:
['Hey', ',', '', None, 'I', "'", 'm', None, '9', '/', '11', None, '7', '-', '11']
如何在没有 'unnecessary' 迭代的情况下解决这个问题?
我在转义反斜杠字符时也遇到了一些麻烦,因为 '\\'
似乎不起作用,关于如何解决这个问题有什么想法吗?
非常感谢。
您可以使用
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']
\w+|[^\w\s]
正则表达式匹配 1 个以上的单词字符(字母、数字、_
符号)或单词和空格字符以外的单个字符。
顺便说一句,要将反斜杠与正则表达式匹配,您需要在原始字符串文字 (r'\'
) 中使用 \
或在常规字符串中使用 4 个反斜杠 ('\\'
) .建议使用原始字符串文字在 Python.
中定义正则表达式模式
更具体地说,我想在任何非字母数字字符上拆分一个字符串,但在分隔符不是白色的情况下 space 我想保留它。即输入:
my_string = 'Hey, I\'m 9/11 7-11'
我想得到:
['Hey' , ',' , 'I' , "'" , 'm', '9' , '/' , '11', '7' , '-' , '11']
没有白色space作为列表元素。
我试过以下方法:
re.split('([/\'\-_,.;])|\s', my_string)
但输出:
['Hey', ',', '', None, 'I', "'", 'm', None, '9', '/', '11', None, '7', '-', '11']
如何在没有 'unnecessary' 迭代的情况下解决这个问题?
我在转义反斜杠字符时也遇到了一些麻烦,因为 '\\'
似乎不起作用,关于如何解决这个问题有什么想法吗?
非常感谢。
您可以使用
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']
\w+|[^\w\s]
正则表达式匹配 1 个以上的单词字符(字母、数字、_
符号)或单词和空格字符以外的单个字符。
顺便说一句,要将反斜杠与正则表达式匹配,您需要在原始字符串文字 (r'\'
) 中使用 \
或在常规字符串中使用 4 个反斜杠 ('\\'
) .建议使用原始字符串文字在 Python.