PyParsing肯定不會跑最快的方式,但它可能是把它寫;-)
from pyparsing import *
STRING = sglQuotedString | dblQuotedString
NONSTRING = Word(alphanums + '.-')
line = OneOrMore(STRING | NONSTRING | Suppress(',')) + lineEnd
def insert_commas(s):
values = line.parseString(s).asList()
return ", ".join(values)
s1 = """1, ' unchanged 1' " unchanged 2 " 2, 2"""
s2 = """1, ' unchanged 1', " unchanged 2 " , 2, 2"""
s3 = """ 1, ' unchanged 1' " unchanged 2 " 2, 2 45"""
s4 = """1, 67.90e-34 67.90E-34 7.9093339333 2, 2 """
print insert_commas(s1)
print insert_commas(s2)
print insert_commas(s3)
print insert_commas(s4)
它打印
1, ' unchanged 1', " unchanged 2 ", 2, 2
1, ' unchanged 1', " unchanged 2 ", 2, 2
1, ' unchanged 1', " unchanged 2 ", 2, 2, 45
1, 67.90e-34, 67.90E-34, 7.9093339333, 2, 2
你的意思是像'(應用re.sub(R 「([\'?\」] * [\'\「])\ s「,r」\ 1,「,s)'? –
不同的字符串可以有不同數量的值,以逗號分隔。例如。如果我將字符串更改爲「」「1,'不變1'」不變2「2,2 45」「」Padraic's似乎並不奏效。 –
PyParsing可能是一個更可讀的方式來做到這一點,如果這是一個選項...? – thebjorn