我有一个带逗号和双引号的csv文件 . 但是,双引号仅在字符串中有逗号时使用 . 像这样:
AAA, BBB, "ACB,BCA", 123, "1,987"
DDC, CHA, ACH;HDC, "2,34", 192
我不想在双引号中解析逗号,并希望得到以下输出:
x1 x2 x3 x4 x5
AAA BBB ACB,BCA 123 1,987
DDC CHA ACH;HDC 2,34 192
简而言之,忽略带双引号的值的逗号,并考虑没有双引号的值的逗号 .
我使用它将多个CSV文件合并为一个CSV文件,同时添加一些引用文件名的列:
with open(outfile, "wb") as outfile:
writer = None
for input_filename in filenames:
with open(input_filename, "rb") as infile:
reader = csv.DictReader(infile, quotechar='"', delimiter=',')
if writer is None:
field_names = ["index1"] + ["index2"] + reader.fieldnames
writer = csv.DictWriter(outfile, field_names)
writer.writeheader()
for row in reader:
row["index1"] = input_filename[1:10]
row["index2"] = input_filename[10:20]
writer.writerow(row)
我阅读CSV的具体解决方案是:
csv.DictReader(infile, quotechar='"', delimiter=',')
但这显然不起作用 .
有什么建议?
编辑:下面一个更好的例子:
我试图打开的csv文件结构如下:
x 1,x 2,x 3,x 4,x5 AAA, “BB,B”, CCC, DDD, EEE AA1, B;B2, CC3, DD4, EE5
我到目前为止尝试过的解析器,csv.DictReader,pd.read_csv或csv.reader似乎都读了“;”在B中; B2作为行断路器,它会混淆以下所有列 .
以下代码解决了“BB,B”问题,但仍将B; B2分解为新行
csv.reader(fileObject, quotechar='"', delimiter=',',
quoting=csv.QUOTE_ALL, skipinitialspace=True)
1 回答
下面的代码片段仍然适用于我,并没有打破';'符号
为我工作过 .
这是我收到的输出: