You need to enable JavaScript to run this app. Python 3.9 实现xlsx地址列按格式逐行写入CSV并去除多余双引号
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.9 实现xlsx地址列按格式逐行写入CSV并去除多余双引号

脚本修正方案

原脚本核心缺陷

  • 地址收集逻辑错误:address_list.append(original_xl['column_name'])将pandas返回的整列Series对象作为单个元素加入列表,未拆解为独立的单条地址,导致循环无法逐行读取有效地址
  • CSV写入逻辑错误:直接将提前用逗号拼接好的整串字符串传入csv.writer.writerow(),会被CSV模块识别为单个含特殊字符的字段,自动为整段内容添加包裹引号,最终出现"John,Doe,AddressLine1"这类异常输出

修正后完整可运行脚本

import pandas as pd
import csv

the_xl_file = "mydata.xlsx"
# 读取Sheet1的全部内容
original_xl = pd.ExcelFile(the_xl_file).parse('Sheet1')
# 直接提取目标列,拆解为单条地址组成的普通Python列表
address_list = original_xl['column_name'].tolist()

first_name = "John"
second_name = "Doe"

# 上下文管理器管理文件句柄,newline参数为CSV写入的标准配置,避免生成多余空行
with open('output.csv', 'w+', newline='') as out_file:
    # 配置CSV写入规则,仅当字段本身含特殊字符时才添加引号
    csv_writer = csv.writer(out_file, quoting=csv.QUOTE_MINIMAL)
    # 写入表头行
    csv_writer.writerow(["firstname_user", "secondname_user", "address"])
    # 逐条写入数据,传入独立字段组成的列表,不提前拼接字符串
    for address in address_list:
        csv_writer.writerow([first_name, second_name, str(address).strip()])

print('CSV file created with addresses ...')

关键修改点说明

  • 移除了错误的append操作,通过.tolist()方法直接把Excel列内容拆解为独立地址的列表,保证循环可以逐次读取单个地址写入新行
  • 调用writerow()时传入三个独立字段组成的列表,而非提前拼接好的整段字符串,从根源上避免整段内容被识别为单字段、被自动加引号的问题
  • 简化了冗余的文件句柄赋值逻辑,用上下文管理器直接管理文件打开/关闭流程,避免文件泄漏
  • 对地址内容做基础的空白字符清理,提升CSV内容的规范性

内容的提问来源于stack exchange,提问作者TheWaterProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 19:36:08