Python 如何仅用括号之间的多个引号替换引号?
我得到了一个格式错误的CSV,它的括号中有引号,如下所示:Python 如何仅用括号之间的多个引号替换引号?,python,Python,我得到了一个格式错误的CSV,它的括号中有引号,如下所示: 1, 2, 3, "4, 5, 6, (7, 8, 9, "10, 11, 12", 13), 14" 所需输出为: 1, 2, 3, "4, 5, 6, (7, 8, 9, ""10, 11, 12"", 13), 14" 我可以考虑用正则表达式替换第一个引号,但如何对括号内的所有引号执行此操作 我只能想到: s = '''1, 2, 3, "4, 5, 6, (7, 8, 9, "10, 11, 12", 13), 14"'''
1, 2, 3, "4, 5, 6, (7, 8, 9, "10, 11, 12", 13), 14"
所需输出为:
1, 2, 3, "4, 5, 6, (7, 8, 9, ""10, 11, 12"", 13), 14"
我可以考虑用正则表达式替换第一个引号,但如何对括号内的所有引号执行此操作
我只能想到:
s = '''1, 2, 3, "4, 5, 6, (7, 8, 9, "10, 11, 12", 13), 14"'''
s.replace(re.search(r'\(.*\)', s).group(0), re.search(r'\(.*\)', s).group(0).replace('"', '""'))
但是我需要足够的效率,因为CSV是巨大的(>100000),只有一些格式错误的行
import re
data = '1, 2, 3, "4, 5, 6, (7, 8, 9, "10, 11, 12", 13), 14"'
def replace(g):
return g.group(0).replace('"', '""')
print(re.sub(r'\(.*?\)', replace, data))
输出:
1, 2, 3, "4, 5, 6, (7, 8, 9, ""10, 11, 12"", 13), 14"
您文件中的所有论题是否平衡,即每行的
数量(
等于数量)
?您的数据是否包含嵌套的偏旁词,例如1,2,(3,(4,5),6),7
,或者仅包含一个平面偏旁词(偏旁词中没有偏旁词)?