Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式从csv文件中获取部分/非全部引号_Python_Regex_Csv_Double Quotes - Fatal编程技术网

Python正则表达式从csv文件中获取部分/非全部引号

Python正则表达式从csv文件中获取部分/非全部引号,python,regex,csv,double-quotes,Python,Regex,Csv,Double Quotes,我有一个.csv文件,所有字段都用双引号分隔,但有些字段中有随机双引号/UPDATE这有点不对劲,我包括两行,第二行是个问题。在最初的版本中,我在结尾没有双引号,这是第一个解决方案的一个问题,该解决方案在其他情况下有效,但在/n之前去掉了引号: "20135025373","25","2013-08-24 00:00:00","WOOD","CHRISTY","","","2679 W. LONG CIRCLE","","LITTLETON","CO","80120","","3510862",

我有一个.csv文件,所有字段都用双引号分隔,但有些字段中有随机双引号/UPDATE这有点不对劲,我包括两行,第二行是个问题。在最初的版本中,我在结尾没有双引号,这是第一个解决方案的一个问题,该解决方案在其他情况下有效,但在/n之前去掉了引号:

"20135025373","25","2013-08-24 00:00:00","WOOD","CHRISTY","","","2679 W. LONG CIRCLE","","LITTLETON","CO","80120","","3510862","2013-09-03 00:00:00","Monetary (Itemized)","Credit/Debit Card","Individual","","Issue Committee","A WHOLE LOT OF PEOPLE FOR JOHN MORSE","","","","N","N","0","STATEWIDE",""
“20135025373”、“10”、“2013-08-24 00:00:00”、“DAVIS”、“JOHN”、“2822 THIRD”、“BOULDER”、“CO”、“80304”、“3510863”、“2013-09-03 00:00:00”、“货币(逐项)”、“信用卡/借记卡”、“个人”、“发行委员会”、“约翰·莫尔斯的一大批人”、“州内的”、“N”、“N”、“0”、“州内的”

我尝试了这段代码,但它也删除了行首和行尾的引号

import re

with open('ColoSOS/2014_ContData.csv') as old, open('2014contx.csv', 'w') as new:
    new.writelines(re.sub(r'(?<!,)"(?!,)', '', line) for line in old)
重新导入
以open('COLOOS/2014_ContData.csv')作为旧版本,open('2014contx.csv','w')作为新版本:

new.writelines(re.sub(r')(?如果您不想在行首和行尾匹配引号,可以使用以下正则表达式:

(?<!,|^)\"(?!,|$)
(?
而不是:

(?<!,)"(?!,)

(?如果您可以使用
csv
模块,请首先查看

如果您希望通过使用正则表达式来实现这一点,我想这就足够了

re.sub(r'(?<=[^,])"(?=[^,])', '', line)

re.sub(r')(?你能用
csv
模块代替
re
?它可能已经内置了这种智能

我对
csv
感到生疏。下面的代码没有经过测试,但可能会给你一个起点

import csv

with open('ColoSOS/2014_ContData.csv') as old, open('2014contx.csv', 'w') as new:
    reader = csv.reader(old, delimiter = ','; quotechar = '"')
    new.writelines(row) for row in reader    

参考:

您的预期输出是什么?如果可以,请从实际csv中向我们拍摄几行。以下是文件中的几行谢谢!出于某种原因,这会抛出一个“look behind requires fixed width pattern”。嗯……根据这一点,Python应该可以使用