如何将文本列表写入TXT文件,每行一项且读取时无\n字符
解决列表写入文本文件每行一项且读取无换行符的问题
嘿,我来帮你搞定这个小问题!你遇到的情况太常见了——要么写入时加换行导致读取后带\n,要么不加就挤成一行。这里有几个实用的解决方案:
方法1:写入时保留换行,读取时精准去除
你原来的写入逻辑是没问题的(给每个元素加\n保证每行一项),只需要在读取的时候把末尾的换行符去掉就行。用rstrip('\n')可以精准删除每行末尾的换行,不会误伤内容里的其他空格:
写入代码
items = ['First line', 'Second line', 'third line'] with open(filepath, "x") as f: f.writelines(line + "\n" for line in items)
读取代码
with open(filepath, "r") as f: # rstrip('\n')只删末尾换行,比strip()更精准 items_read = [line.rstrip('\n') for line in f]
这样得到的items_read就是['First line', 'Second line', 'third line'],完全符合你的需求。
方法2:用print()函数自动处理换行
Python的print()函数默认会在输出末尾加换行符,还支持直接写入文件,用这个方法写入更省心:
写入代码
items = ['First line', 'Second line', 'third line'] with open(filepath, "x") as f: for line in items: print(line, file=f)
读取代码(推荐用splitlines())
with open(filepath, "r") as f: # splitlines()按换行分割,自动丢弃所有换行符 items_read = f.read().splitlines()
splitlines()是处理这种场景的利器,代码简洁还不会出错。
方法3:用join拼接后一次性写入
把列表元素用\n连接成一个字符串,再写入文件,也能保证每行一项:
写入代码
items = ['First line', 'Second line', 'third line'] with open(filepath, "x") as f: # 最后加\n是让文件末尾多一个空行,可选,按需决定 f.write('\n'.join(items) + '\n')
读取代码
和方法2一样,用splitlines()或者列表推导式都可以,效果完全一致。
总结
如果追求代码简洁,推荐用方法2的组合:print()写入 + splitlines()读取,既不用手动加换行,读取时也自动处理掉\n,完美匹配你的需求!
内容的提问来源于stack exchange,提问作者Ali Alhajji
相关产品推荐
相关产品推荐

