Python如何读取CSV文件数据并按行调用week、number字段值
Python读取自定义分隔符CSV文件解决方案
现有代码错误点
- 缩进不符合Python规范:with代码块内的逻辑未统一缩进
- 参数语法错误:
delimiter"\t"缺少等号赋值,正确写法为delimiter="\t" - 方法调用错误:不存在
csv.Dictreare方法,无需重复调用csv读取类,直接遍历已初始化的csv_reader对象即可 - 分隔符匹配问题:若文件实际为多空格分隔而非制表符分隔,指定
\t为分隔符会读取失败,可调整文件为标准逗号分隔格式规避该问题
可用实现代码
方案1:无需修改原文件,直接适配多空格分隔格式
import csv data_list = [] with open("Data.csv", "r") as csv_file: # 跳过表头行,需要保留表头可删除该行 next(csv_file) for line in csv_file: # 按任意空白字符分割后过滤空值,自动适配多空格分隔 split_items = [item.strip() for item in line.split() if item.strip()] # 取对应位置的week和number字段,number按需转为整型 data_list.append({ "week": split_items[1], "number": int(split_items[2]) }) # 后续逐行调用示例 for item in data_list: print(f"week: {item['week']}, number: {item['number']}")
方案2:调整文件为标准逗号分隔格式后读取(兼容性更高)
首先将CSV文件内容调整为逗号分隔:
name,week,number E-mini S&P 500 Options,ES,2 E-mini S&P 500 Weekly Options - Week 1,EW1,4 E-mini S&P 500 Weekly Options - Week 2,EW2,6 E-mini S&P 500 Weekly Options - Week 3,EW3,8 E-mini S&P 500 Weekly Options - Week 4,EW4,10
对应读取代码:
import csv data_list = [] with open("Data.csv", "r") as csv_file: csv_reader = csv.DictReader(csv_file) for row in csv_reader: data_list.append({ "week": row["week"], "number": int(row["number"]) }) # 调用方式与方案1完全一致 for item in data_list: print(item["week"], item["number"])
内容的提问来源于stack exchange,提问作者Davide Serafini
相关产品推荐
相关产品推荐

