Python 使用正则表达式进行拆分会产生不需要的空字符串
在python中,我执行以下操作:Python 使用正则表达式进行拆分会产生不需要的空字符串,python,regex,Python,Regex,在python中,我执行以下操作: >>> re.split("(hello|world|-)", 'hello-world') 我期待着: ['hello'、'-'、'world'] 然而,我得到的是: [''‘你好'、''-''、''‘世界'、''] 这个'从哪里来 我正在使用Python3,以防万一 编辑 你们中的许多人说我可以在-上拆分它,但是,如果有意义的话,我想提取标记。例如,如果我有“hellohello--worldhello”。我要它回来 ['hello
>>> re.split("(hello|world|-)", 'hello-world')
我期待着:
['hello'、'-'、'world']
然而,我得到的是:[''‘你好'、''-''、''‘世界'、'']
这个'
从哪里来
我正在使用Python3,以防万一
编辑 你们中的许多人说我可以在
-
上拆分它,但是,如果有意义的话,我想提取标记。例如,如果我有“hellohello--worldhello”
。我要它回来
['hello'、'hello'、'-'、'-'、'world'、'hello']
根据文档:
如果分隔符中有捕获组,并且它在字符串开头匹配,则结果将以空字符串开头。对于字符串的结尾也适用相同的情况:
如果这是您的问题,您可以始终使用过滤器来控制列表
>>> filter(None, re.split('(hello|world|-)', 'hellohello---worldhello'))
['hello', 'hello', '-', '-', '-', 'world', 'hello']
或者使用findall
获取匹配项
>>> re.findall('(hello|world|-)', 'hellohello---worldhello')
['hello', 'hello', '-', '-', '-', 'world', 'hello']
额外的输出元素是因为您要求re拆分例如hello上的字符串,因此它试图告诉您hello之前是什么,hello和“-”之间是什么,等等。所有这些都是空字符串
如果将其更改为:
re.split((-),“hello world”)
你会得到想要的结果
['hello'、'-'、'world']
您为什么不为此使用str.partition
<代码>'hello-world'。分区('-')
:-->('hello','-','world')
我可以这样做,但如果我有hello-world
。我希望它返回['hello'、'-'、'-'、'world']
除非标记始终是“hello”“-”和“world”,否则我看不出有可能实现您的目标。否则,正则表达式引擎如何知道“hellohello”包含两个感兴趣的项?为什么它不知道?我试过了。看看这个屏幕截图。它显示它匹配所有令牌。我可以这样做,但它只适用于这种情况。看看我编辑的答案。Idk谁先回答,@isedev或你。我想是你,所以我把你的答案记下来。谢谢你!