我将拆分函数定义为 lambda x: re.split('[(|)|.]', x)
,当我将此函数应用于我的原始字符串时,它总是生成一些空字符串。例如:
应用于字符串时:
(Type).(Terrorist organization)AND(Involved in attacks).(nine-eleven)
结果是:
['', 'Type', '', '', 'Terrorist organization', 'AND', 'Involved in attacks', '', '', 'nine-eleven', '']
我知道我可以简单地手动删除那些空字符串,但是有什么聪明的方法可以删除它们吗?
最佳答案
使用 +
获取尽可能多的分隔符,而不是只获取一个:
re.split('[().]+', s)
不幸的是,这还不够,因为众所周知,re.split
在字符串的开头和结尾处生成空字符串:
['', 'Type', 'Terrorist organization', 'AND', 'Involved in attacks', 'nine-eleven', '']
但您可以使用后处理将它们过滤掉:
[x for x in re.split('[().]+', s) if x]
另一方面,您可以还原正则表达式并使用 re.findall
来匹配尽可能多的非分隔符:
re.findall('[^().]+', s)
这直接产生:
['Type', 'Terrorist organization', 'AND', 'Involved in attacks', 'nine-eleven']
关于python - 为什么在 python 中使用 re.split() 时会得到那些空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242452/