繁体   English   中英

在Python中读取文件的问题

[英]Problem with reading file in Python

我有一个文件:Alus.txt

文件内容:(每个名称在新行中)

玛格斯

米克尔

丹尼尔

标记

朱里

胜利者

马雷克

尼古拉

帕维尔

卡乐

问题:程序读取该文件时,每个名称后都有\\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)

您可以使用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 。)由于break停止了循环,因此需要保留该循环以保留原始代码的行为。

编辑2: AL Flanagan正确地指出rstrip会删除所有结尾的空格,而不仅仅是结尾的换行符。 如果只想删除换行符,则可以使用AL Flanagan的方法,或将要删除的字符作为rstrip的参数rstrip

rida = rida.rstrip(r'\r\n')
alnus = [l.rstrip() for l in open('alus.txt', 'r')]

打开('alus.txt')。read()。splitlines()

rstrip()的一个可能问题是它将删除所有空格。 如果要保留空格,可以使用切片:

if line.endswith('\n'):
    line = line[:-1]

如果可以确定所有行都以'\\ n'结尾,则可以通过删除if来加快速度。 但是,通常不能确定文本文件的最后一行是否有换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM