Python如何从CSV存储的列表字符串中提取整数内容并去除多余符号
你当前遇到的输出异常本质是将CSV读取到的列表格式字符串直接当做可迭代对象遍历,字符串的每个字符会被单独迭代输出,所以会出现引号、括号单独特性,大于10的数字被拆分为单个字符的问题,你之前直接用replace处理后没有把字符串转为真实列表,所以问题没有解决。
方案1:使用标准库ast安全转换(推荐)
ast.literal_eval可以安全将符合Python字面量格式的字符串转为对应类型的对象,不需要手动处理符号,兼容多位数、不同引号格式的场景。
示例代码:
import ast import csv # 读取CSV示例 with open('你的文件路径.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: # 假设列表字符串存在每行的第一列 str_list = row[0] # 将字符串转为真实的列表 real_list = ast.literal_eval(str_list) # 转为数字列表 num_list = [int(item) for item in real_list] # 循环打印不会出现拆分问题 for num in num_list: print(num)
方案2:手动解析字符串(无需额外导入)
如果你不想引入ast库,也可以手动处理字符串的符号后拆分:
示例代码:
import csv with open('你的文件路径.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: str_list = row[0] # 去除首尾的方括号 str_content = str_list.strip('[]') # 按逗号拆分每个元素 items = str_content.split(',') # 逐个去除元素两侧的空格、单引号、双引号后转int num_list = [int(item.strip(" '\"")) for item in items] for num in num_list: print(num)
内容的提问来源于stack exchange,提问作者justinkjackson95
相关产品推荐
相关产品推荐

