Python中将CSV输出拆分为多行而非长字符串的技术问询
解决网页抓取结果写入CSV多行的问题
看起来你是直接把抓取到的列表转成字符串写入CSV了,才会出现整串内容挤在一行的情况。用Python标准库的csv模块就能轻松搞定,它会帮你自动处理换行、分隔符和引号的问题,完美生成每行一条记录的CSV文件。
具体步骤&代码示例:
- 先清理原始数据:你的列表元素都带着多余的双引号(比如
"FULIAN..."),先把这些引号去掉,避免写入CSV时重复添加。 - 确保数据一一对应:注意你的示例里
SUPP_YEARS比SUPP_NAME多一个元素,这大概率是抓取时的小失误,先修正成两组数据长度一致(如果实际业务就是有不匹配的情况,得单独调整逻辑)。 - 用
csv.writer逐行写入:这个方法会自动帮你拆分数据为多行,而不是把整个列表拼成一个长字符串。
import csv # 你的原始抓取数据 SUPP_NAME = ['"FULIAN\u0020\u0028M\u0029\u0020SENDIRIAN\u0020BERHAD"', '"RISO\u0020SEKKEN\u0020SDN.\u0020BHD."', '"NATURE\u0020PROFUSION\u0020SDN.\u0020BHD."'] SUPP_YEARS = ['"9"', '"4"', '"1"'] # 修正为和名称列表长度一致 # 清理数据:去掉多余的双引号,转义空格会自动还原成正常空格 cleaned_names = [name.strip('"') for name in SUPP_NAME] cleaned_years = [year.strip('"') for year in SUPP_YEARS] # 写入CSV文件 with open('suppliers.csv', 'w', newline='', encoding='utf-8') as csv_file: # 创建CSV写入对象 writer = csv.writer(csv_file) # 先写入表头(可以换成你需要的表头文字) writer.writerow(['Supplier Name', 'Years in Business']) # 逐行写入每组供应商数据 for name, year in zip(cleaned_names, cleaned_years): writer.writerow([name, year])
几个关键细节:
newline='':避免在Windows系统下写入CSV时出现额外的空行。encoding='utf-8':保证供应商名称里的特殊字符(比如转义空格\u0020)能正确显示,不会乱码。- 如果实际业务中两组数据长度确实不一致,建议先排查抓取逻辑,确保每个供应商都对应唯一的经营年限,避免数据错位。
这样生成的CSV文件就是每行一条供应商记录,完全符合你的需求啦!
内容的提问来源于stack exchange,提问作者l3h
相关产品推荐
相关产品推荐

