Python代码调用split后输出内存地址而非列表分割值的问题求助
Python代码中split方法调用错误导致输出异常的解决办法
嘿,我来帮你搞定这个问题!你遇到的核心问题其实很典型——调用字符串的split()方法时忘记加括号,导致代码没有执行分割操作,反而把方法本身的引用(看起来像“内存地址”)添加到了列表里。
问题分析
在你的代码里,这一行是关键错误:
yumm= yumm+[line.split]
这里的line.split是指向字符串的split方法对象本身,而不是执行分割后得到的结果。当你把它添加到列表中,打印出来的自然就是这个方法对象的引用(比如<built-in method split of str object at 0x...>这类内容),而不是你预期的分割后的字符串列表。
另外你尝试过的yumm=yumm.split()也不对,因为yumm是一个列表,列表类型并没有split()方法,这么写会直接抛出AttributeError异常。
修正后的代码
只需要给split加上括号,让它执行分割操作就可以了:
def hungry(filename): food = open(filename) yumm=[] for line in food: # 给split加上括号,执行字符串分割 yumm = yumm + [line.split()] print(yumm) # 记得手动关闭文件 food.close() hungry("nomnom.txt")
额外优化建议
为了更安全地处理文件,推荐使用with语句,它会自动帮你关闭文件,避免资源泄漏,同时代码也更简洁:
def hungry(filename): yumm = [] with open(filename) as food: for line in food: # 先strip去掉每行末尾的换行符,再执行split更合理 yumm.append(line.strip().split()) print(yumm) hungry("nomnom.txt")
内容的提问来源于stack exchange,提问作者Cassiel
相关产品推荐
相关产品推荐

