Python:将链接列表保存为CSV时字符拆分,如何实现每行一列?
解决Python保存链接列表到CSV时字符拆分多列的问题
问题场景
有一个包含网页链接的Python列表:
links = ['https://www.portalinmobiliario.com/MLC-2150551226-departamento-los-talaveras-id-117671-_JM#position=1&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d', 'https://www.portalinmobiliario.com/MLC-2148268902-departamento-los-espinos-id-116373-_JM#position=2&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d']
用以下代码保存到CSV时,每个链接虽然占一行,但每个字符被拆分到不同列:
with open('links.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(links)
问题原因
csv.writer.writerows() 要求传入可迭代的可迭代对象(比如列表的列表)。直接传字符串列表的话,每个字符串会被当作字符的迭代器,导致每个字符被解析为单独的列。
解决方法
方法1:将每个链接包装为单元素列表后批量写入
通过列表推导式,把每个链接转换成只包含自身的单元素列表,再传给writerows():
import csv links = ['https://www.portalinmobiliario.com/MLC-2150551226-departamento-los-talaveras-id-117671-_JM#position=1&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d', 'https://www.portalinmobiliario.com/MLC-2148268902-departamento-los-espinos-id-116373-_JM#position=2&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d'] with open('links.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows([link] for link in links)
方法2:循环用writerow()单独写入每个链接
每次调用writerow()时传入单元素列表,确保整个链接作为一列写入:
import csv links = ['https://www.portalinmobiliario.com/MLC-2150551226-departamento-los-talaveras-id-117671-_JM#position=1&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d', 'https://www.portalinmobiliario.com/MLC-2148268902-departamento-los-espinos-id-116373-_JM#position=2&search_layout=grid&type=item&tracking_id=01bab66e-7cd3-43ce-b3d7-8389260b443d'] with open('links.csv', 'w', newline='') as f: writer = csv.writer(f) for link in links: writer.writerow([link])
内容的提问来源于stack exchange,提问作者Rai
相关产品推荐
相关产品推荐

