知行编程网知行编程网  2022-11-06 00:30 知行编程网 隐藏边栏  57 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python writerow乱码怎么解决的相关知识,包括png_write_row,以及湖南益阳新增本土确诊0例这些编程知识,希望对大家有参考作用。

如何解决python writerow乱码

从 csv 文件读取数据,然后将其写入另一个 csv 文件时存在乱码问题。


注意点:

writerow函数中需要的参数是可迭代的,比如列表,但是不能直接写字符串,否则会乱码。


例子:

在这个函数中,我直接使用readlines读取csv文件,这样读取的每一行都是一个字符串,然后直接将字符串写入新的csv文件,当然是乱码了。

import csv
def test_writerow():
    path = "D:/liqian/aa.csv"
    path1 = "D:/liqian/bb.csv"
    with open(path,'rb') as f,open(path1,'ab+') as w:
        for line in f.readlines():  #注意这里的line是字符串,这样直接写会乱码
            print type(line)
            csvw = csv.writer(w)
            csvw.writerow(line)


解决方式一:

读取 csv 文件时出现问题。如果使用csv的read函数读取,读取的每一行都是一个list,可以直接写入新的csv文件。

def test_readrow():
    path = "D:/liqian/aa.csv"
    path1 = "D:/liqian/cc.csv"
    with open(path,'rb') as f,open(path1,'ab+') as w:
        csvr = csv.reader(f)    #利用csv包自带的reader函数,
        csvw = csv.writer(w)    
        for line in csvr:        #这样每一行就是一个列表,可以直接写到新的csv文件
            csvw.writerow(line)


解决方式二:

也可以将原来是字符串的行分开并手动创建一个列表。

def test_makerow():
    path = "D:/liqian/aa.csv"
    path1 = "D:/liqian/dd.csv"
    with open(path,'rb') as f,open(path1,'ab+') as w:
        csvw = csv.writer(w)
        for line in f.readlines():
            line_list = line.split(",")   
#原文件是csv格式的,所以line是一个包含多个逗号的字符串,这里我用逗号分割,可以形成一个列表
            csvw.writerow(line_list)

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享