Python导入文本文件拆分行值生成元组列表时报AttributeError如何解决
问题原因与解决代码
报错根源
你报错的行写的是[lines.split(" ",1) for line in lines],这里lines是存储所有行的列表,列表没有split方法,你应该对遍历出的单个行元素line调用split方法。另外你还存在几个逻辑问题:
- split加了第二个参数
1,只会把每行拆成2个元素,无法适配任意维度的行数据 - 没有把拆分后的字符串数值转换为float类型,最终元组里存的会是字符串而非数值
- 错误地把整个行列表转成单个元组添加到结果,而非逐行转换元组后添加
修正后可运行代码
def data_import(x): data_file = [] with open(x, 'r', encoding='utf-8') as datax: for line in datax: # 逐行处理:去除首尾空白→按空格拆分→转float→转元组→加入结果列表 line_items = tuple(float(item) for item in line.strip().split()) data_file.append(line_items) return data_file
代码说明
- 直接迭代文件对象即可逐行读取,不需要提前调用
readlines()把所有内容加载到内存,大文件场景下效率更高 split()不带参数时会自动按任意空白字符(空格、制表符、多个连续空格等)拆分,自动忽略首尾空白,兼容更复杂的文本格式- 逐行转换为float类型的元组后添加到结果列表,自动适配每行不同的元素数量,满足不同维度行数据的需求
- 显式指定encoding参数避免不同系统默认编码不一致导致的读取错误
内容的提问来源于stack exchange,提问作者Damo H
相关产品推荐
相关产品推荐

