如何将TXT文件两列数据分别追加存入指定列表变量
原代码错误点
- 循环迭代变量定义为
line,但代码内调用了未定义的row变量,变量名不匹配 - 没有跳过第一行表头,会把列名字符串也存入目标变量
- 读取的每行是原始字符串,没有按空格分割成两列,也没有将字符串转为数字类型
- 没有过滤行尾换行符、空行的逻辑,遇到异常格式会直接报错
修正后代码
# f为TXT文件路径 a = [] b = [] with open(f, 'r', encoding='utf-8') as file_in: # 跳过第一行表头 next(file_in) for line in file_in: # 去除首尾空白、按任意空白字符分割行内容 parts = line.strip().split() # 过滤空行,确保每行至少有2列数据再处理 if len(parts) >= 2: # 转为整数后存入对应列表 a.append(int(parts[0])) b.append(int(parts[1])) print(a) # 输出 [30, 25] print(b) # 输出 [50, 75]
可选简洁写法
如果确定文件格式无异常,也可以用zip一次性生成两个列表:
with open(f, 'r', encoding='utf-8') as file_in: next(file_in) a, b = zip(*[map(int, line.strip().split()) for line in file_in if line.strip()]) # 如需列表格式而非元组,再做一次转换 a = list(a) b = list(b)
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

