Python:无法将文本正确转换为csv

时间:2018-09-03 07:17:27

标签: python

尝试将文本文件转换为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)

2 个答案:

答案 0 :(得分:2)

这里有几个问题:

  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.read()将.csv文件读取到行列表中。)

答案 1 :(得分:0)

您在打印拆分数组时将其隐式转换为字符串,这并不是您想要的格式。使用join将数组转换回以逗号分隔的字符串。

print(",".join(line.split()), file=p2)