在Python中读取文件的问题

时间:2010-10-31 11:06:58

标签: python list file

我有一个文件: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)

4 个答案:

答案 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来加快速度。但是,通常,您无法确定文本文件中的最后一行是否有换行符。