python3中使用csv模块的csv.writerow()产生的空行问题

#!/usr/env python3
import csv
csv.field_size_limit(500 * 1024 * 1024)
with open('E:/研究生学习/python数据/图书数据/bookinfo_tmall_201701.csv','r',encoding='UTF-8') as csv_in_file:
    with open('E:/研究生学习/python数据/图书数据/bookinfo_repair.csv','w',encoding='UTF-8') as csv_out_file:
        filereader=csv.reader(csv_in_file)
        filewriter=csv.writer(csv_out_file)
        header=next(filereader)
        filewriter.writerow(header)
        for row_list in filereader:
            row_list[9]=str(row_list[9]).strip('元')

filewriter.writerow(row_list)

结果如图所示:

 
 
改正后的代码:
#!/usr/env python3
import csv
csv.field_size_limit(500 * 1024 * 1024)
with open('E:/研究生学习/python数据/图书数据/bookinfo_tmall_201701.csv','r',encoding='UTF-8',newline='') as csv_in_file:
    with open('E:/研究生学习/python数据/图书数据/bookinfo_repair.csv','w',encoding='UTF-8',newline='') as csv_out_file:
        filereader=csv.reader(csv_in_file)
        filewriter=csv.writer(csv_out_file)
        header=next(filereader)
        filewriter.writerow(header)
        for row_list in filereader:
            row_list[9]=str(row_list[9]).strip('元')
            filewriter.writerow(row_list)
结果如图所示:
 
  
这个问题的解决方法是在open()中加一个newline=''即可。关于newline参数有下面的解释说明:

参数newline是用来控制文本模式之下,一行的结束字符。可以是None,’’,\n,\r,\r\n等。

当在读取模式下,如果新行符为None,那么就作为通用换行符模式工作,意思就是说当遇到\n,\r或\r\n都可以作为换行标识,并且统一转换为\n作为文本输入的换行符。当设置为空’’时,也是通用换行符模式工作,输入什么样的,就保持原样全输入。当设置为其它相应字符时,就会判断到相应的字符作为换行符,并保持原样输入到文本。

当在输出模式时,如果新行符为None,那么所有输出文本都是采用\n作为换行符。如果设置为’’或者\n时,不作任何的替换动作。如果是其它字符,会在字符后面添加\n作为换行符。

 
  





猜你喜欢

转载自blog.csdn.net/DM_learner/article/details/79037296