如何更改 CSV 文件中使用的分隔符?

Bjo*_*eke 4 python csv

对于一个研究项目,我有很多 csv 文件,我需要将它们从逗号 (,) 分隔更改为分号 (;) 分隔。所以我只需要改变分隔符。

\n\n

我通常在 Excel 中完成此操作,但这需要大量工作。我需要分别为每个文件执行此操作,而且 Excel 需要花费大量时间来执行此操作。

\n\n

我制作了一个输入和输出文件夹。\n在下面的代码中效果很好。\n问题是:

\n\n
    \n
  1. 逗号不会被分号改变。
  2. \n
  3. 由于某种原因它添加了一个空行,我不\xe2\x80\x99不知道为什么这样做。
  4. \n
\n\n

有人可以给一些建议吗?

\n\n
import csv \nfrom pathlib import Path\n\nfolder_in = Path(r'C:\\convert\\Trajectory\\In') \nfolder_out = Path(r'C:\\convert\\Trajectory\\Out')\n\nfor incsv in folder_in.iterdir():\n    outcsv = folder_out.joinpath(incsv.name)\n    with open(str(incsv), 'r') as fin, open(str(outcsv), 'w') as fout:\n        reader = csv.DictReader(fin)\n        writer = csv.DictWriter(fout, reader.fieldnames, delimiter=';')\n        writer.writeheader()\n        writer.writerows(reader)\n
Run Code Online (Sandbox Code Playgroud)\n

Syl*_*are 8

没有答案,这是我在同一文件上实现 csv 逗号到分号的建议:

path="file_to_convert.csv"

reader = list(csv.reader(open(path, "rU"), delimiter=','))
writer = csv.writer(open(path, 'w'), delimiter=';')
writer.writerows(row for row in reader)
Run Code Online (Sandbox Code Playgroud)

我使用了list()所以保留了阅读器的内容,然后我重新打开文件以写入其中。

如果您不需要将更改放在同一文件中,您可以检查此答案