问题与现象
在使用csv的writerow或者writerows方法时,直接写入字符串会导致字符串被分割成一个字符占一个单元格的问题。
分析
查看writer源码,可以看到源码中的提示Iterable[Any],说明我们所写内容必须转化为列表
class _writer:
dialect: Dialect
def 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 csv
with 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 csv
with open('demo.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
row_data = [['aaaa'], ['bbbb']]
writer.writerows(row_data)
'''
'aaaa'
'bbbb'
'''
文章讨论了在使用Pythoncsv模块的writerow和writerows方法时,如何避免字符串被分割成单个字符占据每个单元格的问题,关键在于确保输入数据转化为Iterable的列表形式。通过两个示例展示了正确的用法和结果。

1852

被折叠的 条评论
为什么被折叠?



