首页 > 解决方案 > 如何在 Python 中使用正则表达式拆分它

问题描述

我有这种类型的字符串

"Cat/Wheat , Com, Ogl/oyher Face Express/Star,"

我想变成这样

["Cat,Wheat,Com,Ogl,oyher,Face,Express,Star"]

基本上在“,”和“/”处分开

我尝试使用 split 函数,但为此我不得不使用双 forloop 效率不高

我做了一些研究并遇到了正则表达式

re.split('\W+',string , 1)

但这不起作用,我应该在过滤器中添加什么

标签: pythonregexpython-3.x

解决方案


目前尚不清楚为什么1要向您的split()- 添加 maxsplit 参数,这会阻止它拆分您想要的所有内容。

没有它你会得到:

> import re
> s = "Cat/Wheat , Com, Ogl/oyher Face Express/Star,"
> re.split(r'\W+', s)
['Cat', 'Wheat', 'Com', 'Ogl', 'oyher', 'Face', 'Express', 'Star', '']

对于最后的灵魂破碎的空虚来说,这非常接近预期。您可以将其过滤掉,但您可能更乐意re.findall()匹配您想要的而不是拆分您不想要的:

> import re
> s = "Cat/Wheat , Com, Ogl/oyher Face Express/Star,"
> re.findall(r'\w+', s)
['Cat', 'Wheat', 'Com', 'Ogl', 'oyher', 'Face', 'Express', 'Star']

要获得单个逗号分隔的字符串(如果这是您想要的),您可以加入:

> import re
> s = "Cat/Wheat , Com, Ogl/oyher Face Express/Star,"
> ",".join(re.findall(r'\w+', s))
'Cat,Wheat,Com,Ogl,oyher,Face,Express,Star'

推荐阅读