逐行读取两列文件并将每行两字段分别赋值给不同变量的实现问题
两列文件逐行读取赋值解决方案
问题原因
直接遍历文件对象时,每次迭代得到的是整行的字符串,并非自动拆分好的两个字段,直接解包给x、y两个变量要么会抛出ValueError: too many values to unpack (expected 2)错误,要么会把字符串的单个字符挨个赋值,完全不符合预期。
实现方案
方案1:基础原生实现(无需第三方依赖)
直接逐行读取后拆分字段,适配任意空白符(空格、制表符等)分隔的两列文件:
# 替换为你的实际文件路径 file_path = "your_file.txt" with open(file_path, 'r', encoding='utf-8') as f: for line in f: # 去除首尾空白并跳过空行 line = line.strip() if not line: continue # 按空白符拆分两个字段赋值 x, y = line.split() # 此处编写你的业务逻辑 print(f"x = {x}") print(f"y = {y}")
如果你的文件是固定用制表符分隔,可以把split()改为split('\t')进一步提高匹配精度。
方案2:csv模块实现(更适配表格类文件)
对于结构化的分隔文件,用csv模块处理更规范,可适配更复杂的字段规则:
import csv file_path = "your_file.txt" with open(file_path, 'r', encoding='utf-8') as f: # 指定分隔符为空格,自动跳过字段前的多余空格 reader = csv.reader(f, delimiter=' ', skipinitialspace=True) for x, y in reader: # 业务逻辑 print(x, y)
方案3:pandas实现(适合后续需要批量处理数据的场景)
如果后续需要对整列数据做计算、筛选等操作,可以用pandas读取:
import pandas as pd # \s+表示匹配任意数量的空白符,names参数自定义两列的列名 df = pd.read_csv("your_file.txt", sep='\s+', names=['file_name', 'time_str']) # 遍历取值 for _, row in df.iterrows(): x = row['file_name'] y = row['time_str'] print(x, y)
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

