Python读取CSV生成列表后如何去除元素单引号并保留列表类型?
解决方案
你现在遇到的单引号问题本质是csv.reader默认读取到的所有字段均为字符串类型,打印时才会显示单引号,不需要更换读取文件的方式,仅需添加字段转整数的逻辑即可实现预期效果。
另外你当前代码中使用with上下文管理文件对象,退出代码块时会自动关闭文件,末尾的csv_file.close()属于冗余代码,可以直接删除。
调整后的代码(基于原有csv库方案)
import csv with open("jobs.csv") as csv_file: csv_reader = csv.reader(csv_file, delimiter=",") # 新增int类型转换逻辑,将字符串转为整数 jobs_data1 = [[tuple(map(int, row[i : i + 2])) for i in range(0, len(row), 2)] for row in csv_reader] print(jobs_data1) print(type(jobs_data1))
替代方案:不使用csv库,直接逐行读取
如果不想依赖csv库,也可以用原生文件读取实现同样效果:
jobs_data1 = [] with open("jobs.csv") as f: for line in f: # 去除行首尾空白、按逗号拆分后全部转成整数 num_list = list(map(int, line.strip().split(','))) # 每两个元素打包为一个元组 row_res = [tuple(num_list[i:i+2]) for i in range(0, len(num_list), 2)] jobs_data1.append(row_res) print(jobs_data1) print(type(jobs_data1))
两种方案运行后输出的jobs_data1都符合你要求的格式,且保留列表类型。
内容的提问来源于stack exchange,提问作者Rozzi
相关产品推荐
相关产品推荐

