无法在Python中将csv文件转换为文本选项卡分隔的文件

时间:2020-07-06 16:40:37

标签: python csv type-conversion tab-delimited-text

不是使用Excel软件将csv文件手动转换为文本制表符分隔的文件

enter image description here

我想使用Python自动执行此过程。

不过,请使用以下code

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:dict包含不在字段名称中的字段:无

我可以知道我在哪里做错了

可以通过以下link

访问csv文件

在此先感谢您的见解。

2 个答案:

答案 0 :(得分:1)

您可以使用名为pandas的Python软件包来做到这一点:

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)-将pd.DataFrame写入由fname给出的CSV文件中

  • 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

答案 1 :(得分:0)

使用逗号分隔的作者姓名有误。下划线行中的列似乎超过了标题的数量。