您的位置:首页 > 编程语言 > Python开发

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

2018-01-11 18:29 471 查看
#!/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作为换行符。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: