问题与现象
在使用csv的writerow
或者writerows
方法时,直接写入字符串会导致字符串被分割成一个字符占一个单元格的问题。
分析
查看writer源码,可以看到源码中的提示Iterable[Any],说明我们所写内容必须转化为列表
class _writer:dialect: Dialectdef writerow(self, row: Iterable[Any]) -> Any: ...def writerows(self, rows: Iterable[Iterable[Any]]) -> None: ...
解决
所写内容必须转化为列表,且writerow
会将1*n大小的list写成1行,writerows
将n*m大小的list写成n行
案例1writerow
:
import csvwith open('demo.csv', 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file)row_data = ['aaaa', 'bbbb']writer.writerow(row_data)
'''
'aaaa', 'bbbb'
'''
案例2writerows
:
import csvwith open('demo.csv', 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file)row_data = [['aaaa'], ['bbbb']]writer.writerows(row_data)
'''
'aaaa'
'bbbb'
'''