而不是csv使用 excel 软件手动将文件转换为文本制表符分隔文件我想使用 Python 自动执行此过程。但是,使用以下代码with open('endnote_csv.csv', 'r') as fin:
with open('endnote_deliminated.txt', 'w', newline='') as fout:
reader = csv.DictReader(fin, delimiter=',')
writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|')
writer.writeheader()
writer.writerows(reader)返回错误ValueError:字典包含不在字段名中的字段:无我可以知道我哪里做错了吗该csv文件可通过以下链接访问提前感谢您的任何见解。
2 回答
www说
TA贡献1775条经验 获得超8个赞
您可以使用调用的 Python 包pandas来执行此操作:
import pandas as pd
fname = 'endnote_csv'
pd.read_csv(f'{fname}.csv').to_csv(f'{fname}.tsv', sep='\t', index=False)
它是这样工作的:
pd.read_csv(fname)
- 读取 CSV 文件并将其存储为一个pd.DataFrame
对象(对于本例不重要).to_csv(fname)
- 将 apd.DataFrame
写入 CSV 文件fname
sep='\t'
-','
用制表符替换 CSV 中使用的index=False
- 使用它来删除行号
如果你想更高级一点并且只使用命令行,你可以这样做:
# csv-to-tsv.py
import sys
import pandas as pd
fnames = sys.argv[1:]
for fname in fnames:
main_name = '.'.join(fname.split('.')[:-1])
pd.read_csv(f'{main_name}.csv').to_csv(f'{main_name}.tsv', sep='\t', index=False)
这将允许您从命令行运行这样的命令,并一次性将所有.csv文件更改为文件:.tsv
python csv-to-tsv.py *.csv
添加回答
举报
0/150
提交
取消