繁体   English   中英

使用 Python,如何拆分多个分隔符并在输出列表中只保留一个?

[英]Using Python, how do I split on multiple delimiters and keep only one in my output list?

这里是一个非常绿色的python用户,所以对我放轻松,文档并没有帮助我理解我错过了什么。 类似于RE 拆分多个参数 | (或)返回 none python ,我需要在多个分隔符上拆分字符串。 上述问题只允许使用保留或保留两个分隔符-我只需要保留其中之一 请注意,上述问题来自 2012 年,因此很可能是我正在使用的 Python 3.6 的更早版本。

我的数据:

line = 'APPLE,ORANGE CHERRY APPLE'

我想要一个返回的列表,如下所示:

['APPLE', ',', 'ORANGE', 'CHERRY', 'APPLE']

我需要保留逗号,以便稍后删除重复的组件。 如果我能正确创建列表,那部分就可以工作了。 这就是我所拥有的。

list = re.split(r'\s|(,)',line)
print(list)

我这里的逻辑在空格和逗号上分开,但只保留逗号 - 对我来说很有意义。 不:

['APPLE', ',', 'ORANGE', None, 'CHERRY', None, 'APPLE']

我还尝试了上面链接问题中提到的内容,将整个组放入捕获中:

re.split(r'(\s|(,))',line)

没有了:

['APPLE', ',', ',', 'ORANGE', ' ', None, 'CHERRY', ' ', None, 'APPLE']

我错过了什么? 我知道这与我的捕获组的设置方式有关,但我无法弄清楚。 提前致谢!

我建议使用匹配的方法

re.findall(r'[^,\s]+|,', line)

请参阅正则表达式演示 [^,\\s]+|,模式匹配

  • [^,\\s]+ - 除逗号和空格之外的一个或多个字符
  • | - 或者
  • , - 逗号。

看一个Python 演示

import re
line = 'APPLE,ORANGE CHERRY APPLE'
l = re.findall(r'[^,\s]+|,', line)
print(l) # => ['APPLE', ',', 'ORANGE', 'CHERRY', 'APPLE']

不使用regex你可以这样做

res = [x for x in line.replace(',', ' , ').split()]
print(res)

输出:

['APPLE', ',', 'ORANGE', 'CHERRY', 'APPLE']

过滤掉None s:

import re
line = 'APPLE,ORANGE CHERRY APPLE'
print([m for m in re.split('\s+|(,)', line) if m])
>>> ['APPLE', ',', 'ORANGE', 'CHERRY', 'APPLE']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM