Python:将CSV读取结果转为指定类型的元组列表
如何将CSV读取的字符串列表转换为指定类型的元组列表?
嘿,这事儿其实挺简单的!你已经用csv.reader拿到每行的字符串列表了,接下来只需要在遍历的时候对特定位置的元素做类型转换,再把整行打包成元组就行,完全不用额外导入别的模块。
直接上修改后的代码:
import csv stock_tuples = [] with open('data/stock.csv', newline='') as csvfile: reader = csv.reader(csvfile, delimiter=',', quotechar='|') for row in reader: # 按要求转换类型:前4个保持str,第5个转float,第6个转int converted_row = ( row[0], row[1], row[2], row[3], float(row[4]), int(row[5]) ) stock_tuples.append(converted_row)
简单解释下:
- 先初始化一个空列表
stock_tuples用来存储最终的元组结果 - 遍历
reader返回的每一行字符串列表时,对对应位置的元素做类型转换:- 前四个元素(日期、交易所、公司名、股票代码)本来就是字符串,直接保留即可
- 第5个元素(股价)用
float()转换为浮点数 - 第6个元素(成交量)用
int()转换为整数
- 把转换后的元素打包成元组,添加到
stock_tuples列表里就完成了
如果你的CSV里可能存在格式不规范的行(比如某个位置不是数字),可以加个try-except块来避免程序崩溃,比如:
import csv stock_tuples = [] with open('data/stock.csv', newline='') as csvfile: reader = csv.reader(csvfile, delimiter=',', quotechar='|') for idx, row in enumerate(reader): try: converted_row = ( row[0], row[1], row[2], row[3], float(row[4]), int(row[5]) ) stock_tuples.append(converted_row) except (ValueError, IndexError) as e: print(f"第{idx+1}行格式有问题,跳过:{row},错误信息:{e}")
这样遇到有问题的行就会提示并跳过,不会影响整个程序运行。
内容的提问来源于stack exchange,提问作者juna
相关产品推荐
相关产品推荐

