Python读取文本文件生成嵌套列表时如何去除换行符\n
解决方案
你原代码存在两个核心问题:
split(')属于语法笔误,缺少闭合引号与分隔符,根据你的文件格式,分隔符应为逗号,- 读取行内容时未处理行尾自带的
\n换行符,分割后也没有清理元素前后的多余空格
可直接运行的实现代码
推荐使用with上下文管理器打开文件,会自动完成文件关闭操作,避免资源泄漏:
table = [] # 注意替换encoding为你的文件实际编码,常见的有utf-8、gbk with open("test_file.txt", "r", encoding="utf-8") as file: for line in file: # 先去除整行首尾的空白字符(包含\n、首尾多余空格、制表符等) line_stripped = line.strip() # 跳过文件中可能存在的空行 if not line_stripped: continue # 按逗号分割行内容,再对每个分割后的元素去除前后多余空格 row = [item.strip() for item in line_stripped.split(',')] table.append(row)
运行后table的输出完全符合你的预期:
[['Beans', '1222', '422', '6712'], ['Eggs', '4423', '122', '2231'], ['Tomato', '2232', '224', '2321']]
简洁写法(列表推导式)
如果偏好更短的代码,可以直接用嵌套列表推导式实现完全相同的效果:
with open("test_file.txt", "r", encoding="utf-8") as file: table = [ [item.strip() for item in line.strip().split(',')] for line in file if line.strip() ]
之前尝试的方法问题说明
- 直接用
readlines()遍历:没有做strip()处理,所以会保留每行末尾的\n,分割后逗号后的空格也会留在元素开头 - 用
read().splitlines():只解决了换行符问题,没有对每一行做二次分割和元素去空格处理,所以只能得到一维的整行字符串列表,只要在这个结果的基础上补充分割+去空格逻辑即可,和上面的实现逻辑一致。
如果后续需要对列表里的数值做计算,可以在处理元素时直接转成整数,注意第一列是食材名称,跳过转换即可。
内容的提问来源于stack exchange,提问作者Jodo
相关产品推荐
相关产品推荐

