python中的正则表达式:在双引号之间替换多次出现的逗号

Egr*_*ore 3 python regex

我正在尝试找到一种方法来替换csv文件中使用python在两个双引号之间发生的所有逗号.

鉴于此类输入:

abc,def,"ghi,jkl,mno",pqr,stu

我想得到:

abc,def,"ghi|jkl|mno",pqr,stu

我尝试使用类似于以下内容的正面外观:

(?<=\")(this here should match every comma)(?=\")但我无法让它发挥作用.有任何想法吗?

Avi*_*Raj 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'
Run Code Online (Sandbox Code Playgroud)

注意:这不会处理转义引号并假设所有双引号都已正确平衡.