簡體   English   中英

無法將 csv 文件轉換為 Python 中的文本制表符分隔文件

[英]Unable to convert csv file to text tab delimited file in Python

而不是使用 excel 軟件手動將csv文件轉換為文本制表符分隔文件

在此處輸入圖像描述

我想使用 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文件可通過以下鏈接訪問

提前感謝您的任何見解。

您可以使用名為 pandas 的 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 object (對於此示例不重要)

  • .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文件更改為一個 go 中的.tsv文件:

python csv-to-tsv.py *.csv

它在逗號分隔的作者姓名上出錯。 下划線行中的列似乎超過了標題的數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM