我有一个文件:Alus.txt
文件内容:(新行中的每个名称)
Margus
Mihkel
丹尼尔
标记
树里
维克多
马立克
尼古拉
的Pavel
卡勒
问题:当programm读取此文件时,每个名称后面都有\n
(['Margus\n', 'Mihkel\n', 'Daniel\n', 'Mark\n', 'Juri\n', 'Victor\n', 'Marek\n', 'Nikolai\n', 'Pavel\n', 'Kalle']
)。如何删除\n
并列出名称?我做错了什么?谢谢。
alus = []
file = open('alus.txt', 'r')
while True:
rida = file.readline()
if (rida == ''):
break
else:
alus.append(rida)
答案 0 :(得分:4)
您可以使用rstrip删除换行符:
alus = []
with open('alus.txt', 'r') as f:
for rida in f:
rida=rida.rstrip()
if rida: alus.append(rida)
else: break
顺便说一句,测试字符串是否为空的常用方法是
if not rida:
而不是
if (rida == ''):
如果你有if...else
块,你应该考虑非否定形式:
if rida:
因为它通常更容易阅读和理解。
修改:我之前关于删除break
的评论是错误的。 (我错误地将break
误认为continue
。)由于break
停止了循环,因此需要保留它以保留原始代码的行为。
编辑2: A.L. Flanagan正确地指出rstrip
删除所有尾随空格,而不仅仅是结尾换行符。如果您只想删除换行符,可以使用A.L. Flanagan的方法,或者将要删除的字符列为rstrip
的参数:
rida = rida.rstrip(r'\r\n')
答案 1 :(得分:4)
alnus = [l.rstrip() for l in open('alus.txt', 'r')]
答案 2 :(得分:3)
开( 'alus.txt')。读()。splitlines()
答案 3 :(得分:1)
rstrip()的一个可能问题是它将删除任何空格。如果要保留空格,可以使用切片:
if line.endswith('\n'):
line = line[:-1]
如果您确定所有行都以'\ n'结尾,则可以通过删除if来加快速度。但是,通常,您无法确定文本文件中的最后一行是否有换行符。