[英]Split string by comma unless followed by a space or a '+'
我正在尝试用逗号分隔一个极长的字符串。 但是,我有两个要求:
例如,输入将是:
text = "hello,+how are you?,I am fine, thanks"
output 是:
['hello,+how are you?', 'I am fine, thanks']
即,分隔值的唯一逗号是后面没有“+”或空格的逗号
我已管理要求 1) 如下:
re.split(r',(?=[^\s]+)',text)
我不知道如何添加要求 2)
最简单的解决方案是只查找您不想要的模式,并完全排除它。 您可以在正则表达式中使用负前瞻来做到这一点。
>>> text = "hello,+how are you?,I am fine, thanks"
>>> re.split(r',(?![+ ])', text)
['hello,+how are you?', 'I am fine, thanks']
这将匹配,
除非它后跟文字+
或space
。
尝试这个
re.split(r',(?=[^\s +])',text)
我建议你 go 和@HampusLarsson 的答案,但我想挤进一个不使用导入模块的答案:
s = "hello,+how are you?,I am fine, thanks"
ind = [0]+[i for i,v in enumerate(s)
if v == ',' and s[i+1] not in [' ','+']]
parts = [s[i:j].lstrip(',')
for i,j in zip(ind, ind[1:]+[None])]
print(parts)
Output:
['hello,+how are you?', 'I am fine, thanks']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.