python reg ex包含缺少的逗号
问题内容:
我需要确保一个字符串具有逗号分隔的值。我读取的字符串可能具有空格分隔的值。
- 我的输入字符串中可能缺少一些逗号,也就是说,如果存在任何用逗号分隔的值而没有逗号,则必须添加一个逗号
- 我不应该对单引号或双引号内的字符串进行任何更改。这些带引号的值可以包括除引号外的任何字母数字。
一个示例字符串是:
""" 1, ' unchanged 1' " unchanged 2 " 2.009, -2e15 """
我应该在“ not this1”之后和“ not this 2”之后添加逗号。
所以我的结果字符串应该是:
"""1,' unchanged 1'," unchanged 2 ",2.009,-2e15"""
我一直在尝试s1|s2|(s3)
键入正则表达式。但无法完成任务。
字符串可以具有不同数量的值,以逗号分隔。
问题答案:
也许使用findall,str.join和str.strip会更容易,先查找引号之间的字符串,然后查找所有非空格:
s = """ 1, ' unchanged 1' " unchanged 2 " 2.009, -2e15 3"""
r = re.compile("[\'\"].*?[\'\"]|\S+")
print(", ".join([x.strip(",") for x in r.findall(s)]))
1, ' unchanged 1', " unchanged 2 ", 2.009, -2e11, ' unchanged 1', " unchanged 2 ", 2.009, -2e15, 35, 3
如果您不想在逗号后留空格:
print(",".join([x.strip(",") for x in r.findall(s)]))
1,' unchanged 1'," unchanged 2 ",2.009,-2e15,3