首页 > 解决方案 > Python:无法正确将文本转换为 csv

问题描述

尝试将文本文件转换为 csv,但在转换后的文件中,我在每行的开头和结尾都得到方括号,每个字符周围都有单引号。

在第一步中,我试图删除单引号,但这似乎不起作用

代码如下:

with open('New-file_0.csv','w') as p3:
    with open ('New-file_1','r') as p2: 
        for line in p2: 
            if not line.isspace(): 
                print(line.split(),file = p3)

with open ('final-file_1.csv','w') as p2:
    with open('New-file_0.csv','r') as p3: 
        for line in p3: 
            line=line.replace("'","") 
            print(line.split(),file = p2)

标签: python

解决方案


这里有几个问题:

  1. 而不是打印到文件,通常使用p3.write(myline).
  2. split()生成列表,您当前提供给您的打印功能,因此它们被写入您的文件。你想给他们的是一个字符串,例如",".join(line.split())
  3. 由于在这种情况下,您想生成一个 .csv 文件,最好绕过所有这些并使用内置的 csv 模块,它将负责将您的列表转换为字符串:

    import csv
    
    with open(output_file,'wb') as p3: # make sure to use 'wb' for binary writing, or you will get unwanted empty rows
        output_data = csv.writer(p3, delimiter=",")
        with open (input_file,'r') as p2:
            for line in p2:
                row = line.strip().split()
                if row:
                    output_data.writerow(row)
    

(此模块还允许使用 将 .csv 文件读取到行列表中csv.read())。


推荐阅读