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

hol*_*erm 7 python csv excel bank python-3.x

我的 csv 文件以分号作为分隔符。我可以用以下命令打开它

\n\n
r = csv.reader(infile, delimiter=";")\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

我的代码:

\n\n
import os\nimport csv\nfields = ["Buchungstag", "Buchungstext", "Beguenstigter/Zahlungspflichtiger", "", "", "Betrag", "Verwendungszweck"]\n\nwith open("bank.csv") as infile, open("temp2.csv", "w", newline="") as outfile:\n    r = csv.DictReader(infile)\n    w = csv.DictWriter(outfile, fields, extrasaction="ignore")\n    w.writeheader()\n    for row in r:\n        w.writerow(row)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试打开文件并仅加载某些字段,如果我事先修改文件,将其替换为;,我为此使用记事本++)\xe2\x80\x93,则该字段有效,但我想跳过这部分并直接打开文件。

\n

Zer*_*eus 15

DictReaderDictWriter接受任意参数,包括delimiter,并将它们传递给底层readerwriter对象,如文档所述:

\n\n
\n

csv.DictReader(\xe2\x80\xa6)

\n\n

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

\n
\n\n

\n\n

\n

csv.DictWriter(\xe2\x80\xa6)

\n\n

任何其他可选参数或关键字参数都会传递给底层writer实例。

\n
\n\n

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

\n\n
    r = csv.DictReader(infile, delimiter=";")\n
Run Code Online (Sandbox Code Playgroud)\n\n

应该按预期工作。

\n