如何使DictReader打开以分号作为字段分隔符的文件?

时间:2019-03-08 09:47:28

标签: python excel python-3.x csv bank

我的csv文件使用分号作为分隔符。我可以用

打开它
r = csv.reader(infile, delimiter=";")

没有任何问题。问题是我想将文件作为字典打开。 csv.DictReader类没有delimiter选项。

我的代码:

import os
import csv
fields = ["Buchungstag", "Buchungstext", "Beguenstigter/Zahlungspflichtiger", "", "", "Betrag", "Verwendungszweck"]

with open("bank.csv") as infile, open("temp2.csv", "w", newline="") as outfile:
    r = csv.DictReader(infile)
    w = csv.DictWriter(outfile, fields, extrasaction="ignore")
    w.writeheader()
    for row in r:
        w.writerow(row)

我尝试打开文件并仅加载某些字段,如果我事先修改了文件,将;替换为,(我为此使用了notepad ++),则可以正常工作–但我想跳过这部分并直接打开文件。

1 个答案:

答案 0 :(得分:1)

DictReaderDictWriter都接受包含delimiter的任意参数,并将它们传递给基础的readerwriter对象,如文档所述:

  

class csv.DictReader(…)

     

所有其他可选参数或关键字参数都传递给基础的reader实例。

  

class csv.DictWriter(…)

     

任何其他可选参数或关键字参数都传递给基础的writer实例。

将上面代码中的相关行更改为

    r = csv.DictReader(infile, delimiter=";")

应能按预期工作。