如何将CSV提取的数字变量转为含完整数值元素的列表?
问题解决:将CSV中的整数值作为单个元素存入列表并随机选取
你的问题出在list(buys)的用法上——因为从CSV读取的buys是字符串类型(比如"803"),调用list()会把字符串的每个字符拆分成列表的独立元素。要把整个数字作为单个元素存入列表,需要调整代码逻辑:
修正后的代码
import csv import random # 初始化存储所有目标值的列表 buys_list = [] with open('data.csv', 'r') as data: data_list = csv.reader(data, delimiter=',') for item in data_list: # 取出第6个元素(注意CSV索引从0开始,确认item[6]是你要的列) buy_value = item[6] # 转成整数(如果需要数值类型,不需要的话可以跳过int转换) buy_num = int(buy_value) # 将整个值添加到列表中 buys_list.append(buy_num) # 从完整列表中随机选取一个元素 random_number = random.choice(buys_list) print("随机选取的元素:", random_number) print("完整列表:", buys_list)
关键改动说明
- 提前初始化空列表
buys_list,用来收集所有行的目标值,而非每行单独生成小列表 - 用
append()把每个完整的数值(或字符串)添加到列表,确保每个元素是完整的数字(比如803,而非拆分后的字符) - 使用
with语句管理文件,自动处理文件关闭,比直接open更安全 - 把随机选取逻辑放在遍历完所有行之后,确保能从所有目标值里随机选取,而非每行选一次
补充说明
如果CSV第6列是带小数的数值,把int()换成float()即可;如果不需要数值计算,直接存字符串的话,去掉类型转换步骤,直接buys_list.append(buy_value)就行。
内容的提问来源于stack exchange,提问作者Arrrda8
相关产品推荐
相关产品推荐

