[英]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']
我错过了什么? 我知道这与我的捕获组的设置方式有关,但我无法弄清楚。 提前致谢!
不使用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.