Python读取CSV得到含字符串的列表而非嵌套列表,如何转换为目标结构
问题原因
- CSV读取参数配置错误:你设置的分隔符
delimiter=';'与实际文件的字段分隔符不匹配,你提供的输出内容里字段以逗号+空格分隔,因此csv.reader将整行识别为单个字符串元素,未做字段拆分。 - 字段外层包裹了额外的单引号,未配置参数让csv模块自动识别去除。
- 代码存在变量名笔误:你定义的存储读取结果的变量为
PriceListGetAG,但循环中获取长度调用的是未定义的GreenHomeSelect_PriceListGetAG,运行时会触发NameError。
解决方案
方案1:修正CSV读取参数(推荐)
读取时直接配置匹配的参数,一步得到目标嵌套列表结构,代码如下:
import csv with open('/home/developer/Desktop/csv/JE_csv/JP_Preisliste_GreenHome_Select_ab_29-10.2021.csv', encoding='utf-8-sig') as csv_data: # delimiter设为逗号匹配字段分隔,quotechar设为单引号自动去除字段外层引号,skipinitialspace跳过逗号后的空格 csv_reader = csv.reader(csv_data, delimiter=',', quotechar="'", skipinitialspace=True) PriceListGetAG = list(csv_reader) # 修正变量名,直接遍历打印每行 for elem in PriceListGetAG: print(elem)
运行后输出即为你需要的结构:['14844', '26.10.2021', 'JP_C24_002', 'GreenHome Select', '01067']
方案2:对已读取的字符串做二次转换
如果不方便修改读取逻辑,可对已得到的字符串做拆分处理:
# 示例:单条数据处理 raw_item = ["'14844', '26.10.2021', 'JP_C24_002', 'GreenHome Select', '01067'"] processed_item = [field.strip("'") for field in raw_item[0].split(', ')] print(processed_item) # 全量数据批量处理 processed_list = [] for raw_item in PriceListGetAG: processed_item = [field.strip("'") for field in raw_item[0].split(', ')] processed_list.append(processed_item)
内容的提问来源于stack exchange,提问作者Muhammad Hassan Nasir
相关产品推荐
相关产品推荐

