【问题标题】:batch tsv to csv script批量 tsv 到 csv 脚本
【发布时间】:2021-01-22 20:00:13
【问题描述】:

我是 Python 的新手,我编写了这个脚本,将 tsv 文件批量转换为 csv。我不断收到错误消息并花费数小时试图查看我做错了什么。对此的任何帮助将不胜感激。错误代码是“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte”

import os
import sys
import shutil
import pandas as pd
import argparse

def main():
    if len(sys.argv) == 1:
        files = [x for x in os.listdir('.') if x.endswith('.tsv')]
    else:
        files = [sys.argv[1]]
    
    for file in files:
        df = pd.read_csv(file, header=0, sep='\t', encoding='utf-8', quoting=3)
        new_filename = f'{file.replace(".tsv", "")}.csv'
        df.to_csv(new_filename, encoding='utf-8', index=False)
        print(f'Converted file: {new_filename}')

    print('Done!')

if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python python-3.x pandas dataframe csv


    【解决方案1】:

    当 CSV 被读入 Pandas 时,它使用utf-8 编码,但是,文件上可以使用其他编码格式

    在这行代码中:

    df = pd.read_csv(file, header=0, sep='\t', encoding='utf-8', quoting=3)
    

    尝试将encoding 设置为其他格式。

    您可以尝试许多不同的格式,这里是完整的list。我建议使用记事本或其他文本编辑器打开文件,然后使用 utf-8 编码另存为 CSV。

    【讨论】:

    • 是的,文章帮助修改代码以处理不同的语言。非常感谢。
    • @crossrider201 没问题。请单击左侧的复选标记接受答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多