首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Python中将csv文件转换为文本选项卡分隔文件

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

Stack Overflow用户
提问于 2020-07-06 16:40:37
回答 2查看 743关注 0票数 0

而不是使用excel软件手动将csv文件转换为文本选项卡分隔的文件

我想使用Python实现这个过程的自动化。

但是,使用以下代码

代码语言:javascript
运行
复制
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包含的字段不在字段名中:无

我能知道我哪里做错了吗

csv文件可以通过以下链接访问

提前感谢您的任何见解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-06 16:59:34

您可以使用名为pandas的Python包来执行以下操作:

代码语言:javascript
运行
复制
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 -使用它移除行号

如果您想要更高级一些,并且只使用命令行,您可以这样做:

代码语言:javascript
运行
复制
# 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文件:

代码语言:javascript
运行
复制
python csv-to-tsv.py *.csv
票数 2
EN

Stack Overflow用户

发布于 2020-07-06 17:22:13

这是错误的逗号分开的作者名称。下划线行中的列似乎超过了标题的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62760619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档