在 Python 中,如何使用多个分隔符拆分字符串并知道使用哪个分隔符来分隔任何两个元素?
例如,在这篇文章中的以下示例中:
>>> a='Beautiful, is; better*thannugly'
>>> import re
>>> re.split('; |, |*|n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
我如何确定分隔"是">和"更好"的分隔符是";'?
awk
有一个有用的方法来实现这一点 patsplit(string, array [, fieldpat [, seps ] ])
,其中 seps
是一个数组,它保存分隔两个元素的分隔符。 在这种情况下,seps[1]
将是'、',seps[2]
将是';",seps[3]
为"*",seps[4]
为""。 我在re.split
中没有看到类似的功能.
您可以捕获正则表达式模式以获取输出中的分隔符:
In [16]: a = 'Beautiful, is; better*thannugly'
In [17]: re.split(r'(; |, |*|n)', a)
Out[17]: ['Beautiful', ', ', 'is', '; ', 'better', '*', 'than', 'n', 'ugly']
然后,您可以使用常用的索引表示法获取分隔符。
现在,如果您想要吐出的单词,请从索引 0 中切片,步长为 2:
In [18]: re.split(r'(; |, |*|n)', a)[::2]
Out[18]: ['Beautiful', 'is', 'better', 'than', 'ugly']
若要获取分隔符,请从索引 1 开始切片,步长为 2:
In [19]: re.split(r'(; |, |*|n)', a)[1::2]
Out[19]: [', ', '; ', '*', 'n']