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作为换行符。

 
 





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值