繁体   English   中英

用逗号分割字符串,除非后跟空格或“+”

[英]Split string by comma unless followed by a space or a '+'

我正在尝试用逗号分隔一个极长的字符串。 但是,我有两个要求:

  1. 逗号后面不能跟空格
  2. 逗号后面不能跟 '+' 符号

例如,输入将是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM