按字母拆分Python字符串并保留分隔符

乔克·马蒂尼

使用正则表达式,如何分割字符串并将其分隔符保留在返回的结果中?我正在尝试将包含数字和字符串的字符串拆分为一组字母,后跟任何包含“。”的数值。但是它似乎无法正常工作。

下面是我的测试字符串,即时消息使用的是python 2.7,它没有产生预期的ID。

s = 'M160.394,83.962L121.5,52L86.31,73.378L58,104.917L89.75,C136.667L158.542,136.667L185,110.208L160.394,83.962Z'
parts = filter(None, re.split('([MLHVCSQTAZ][^MLHVCSQTAZ]+)', s, re.IGNORECASE))
print len(parts), parts
>>> 3 ['M160.394,83.962', 'L121.5,52', 'L86.31,73.378L58,104.917L89.75,C136.667L158.542,136.667L185,110.208L160.394,83.962Z']

我希望它能给我这个

>>> 10 ['M160.394,83.962', 'L121.5,52', 'L86.31,73.378', 'L58,104.917', 'L89.75,', 'C136.667', 'L158.542,136.667', 'L185,110.208', 'L160.394,83.962', 'Z']

它应该输出一个字符串列表,其中每个字符串都以一个字母开头,在原始正则表达式中可以找到 MLHVCSQTAZ

阿努巴瓦

在你的代码被传递re.IGNORECASE为第一个参数re.split,但第3个参数re.splitmaxsplit不是标志。

re.IGNORECASE 等于2,因此您的输入仅被拆分两次。

您可以使用:

>>> list(filter(None, re.split(r'([MLHVCSQTAZ][^MLHVCSQTAZ]+)', s, 0, re.I)))
['M160.394,83.962', 'L121.5,52', 'L86.31,73.378', 'L58,104.917', 'L89.75,', 'C136.667', 'L158.542,136.667', 'L185,110.208', 'L160.394,83.962', 'Z']

或使用内联模式忽略大小写:

re.split(r'(?i)([MLHVCSQTAZ][^MLHVCSQTAZ]+)', s)

我建议使用re.findall使用几乎相同的正则表达式的简单代码:

parts = re.findall('(?i)[MLHVCSQTAZ][^MLHVCSQTAZ]*', s)

参考: SRE_FLAG_IGNORECASE = 2lib/python2.7/sre_constants.py(感谢@vks的评论)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

拆分字符串但保留 C 中的分隔符

拆分字符串並保留分隔符

如何拆分字符串并保留特定的分隔符?

如何拆分字符串但保留分隔符?

在带有多个分隔符的python中拆分字符串的最佳方法-同时保留分隔符

按分隔符拆分字符串

通过多个分隔符拆分字符串并保留分隔符

Java Regex在分隔符和保留分隔符之间拆分字符串

使用多个分隔符拆分字符串并保留分隔符

在Python中拆分字符串时如何保留分隔符?

如何使用 python re 库拆分字符串并保留分隔符?

分隔符字符串拆分

将字符串拆分为数组,在Swift中保留定界符/分隔符

在多个分隔符上拆分字符串,同时保留一个或多个分隔符

如何使用2个分隔符的正则表达式拆分字符串,但将分隔符保留在Python中?

我將如何拆分 python 字符串並保留分隔符,但分隔符不是單獨的列表項?

Python 將字符串拆分/切片為列表,同時保留分隔符

Javascript和正则表达式:拆分字符串并保留分隔符

javascript拆分字符串并将分隔符保留为自己的数组值

在保留空格分隔符的同时拆分字符串

如何在 C# 中拆分字符串并保留分隔符

重新拆分以将字符串分解为组件但保留分隔符

如何拆分字符串并仅保留分隔符后的文本?

Vim正则表达式拆分字符串,但保留分隔符

如何拆分字符串但在开头保留分隔符

將字符串拆分為 2 列,但保留分隔符

拆分字符串但仅删除分隔符并保留空格 - java

根据子字符串分隔符拆分字符串,将分隔符保留在结果中

按找到的第一個分隔符拆分字符串