为了账号安全,请及时绑定邮箱和手机立即绑定

无法将 csv 文件转换为 Python 中的文本制表符分隔文件

无法将 csv 文件转换为 Python 中的文本制表符分隔文件

达令说 2023-02-22 17:09:04
而不是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


查看完整回答
反对 回复 2023-02-22
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

它在逗号分隔的作者姓名上出错。下划线行中的列似乎超过了标题数。



查看完整回答
反对 回复 2023-02-22
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信