我正在尝试找到一种方法来替换csv文件中使用python在两个双引号之间发生的所有逗号。
鉴于此类意见:
abc,def,"ghi|jkl|mno",pqr,stu
我想得到:
(?<=\")(this here should match every comma)(?=\")
我尝试使用类似于以下内容的正面外观:
IsAuthReqSigned
但我无法让它发挥作用。有什么想法吗?
答案 0 :(得分:5)
在替换部件中使用带有匿名或lambda函数的re.sub。
>>> import re
>>> s = 'abc,def,"ghi,jkl,mno",pqr,stu'
>>> re.sub(r'"[^"]+"', lambda x: x.group().replace(',', '|'), s)
'abc,def,"ghi|jkl|mno",pqr,stu'
注意:这不会处理转义引号并假设所有双引号都已正确平衡。
答案 1 :(得分:0)
这样一个更简单的方法可以为你工作:
string = 'abc,def,"ghi|jkl|mno",pqr,stu'
string_splited = string.split('"')
string_splited[1] = string_splited[1].replace(',', '|')
那会给你一个清单:
>>> string_splited
['abc,def,', 'ghi|jkl|mno', ',pqr,stu']
你可以重新组装
>>> '"'.join(string_splited)
'abc,def,"ghi|jkl|mno",pqr,stu'