文本在 Python 中以错误的顺序打印

Posted

技术标签:

【中文标题】文本在 Python 中以错误的顺序打印【英文标题】:Text is printed in the wrong order in Python 【发布时间】:2020-07-04 18:20:18 【问题描述】:

我写了这个程序:

with open("Films.txt","r") as f:
    films=[]
    newFilms=[]
    for row in f:
        field=row.split(",")
        ID=field[0]
        title=field[1]
        year=field[2]
        rating=field[3]
        duration=int(field[4])
        genre=field[5].strip()
        newFilms.append(ID)
        newFilms.append(title)
        newFilms.append(year)
        newFilms.append(rating)
        newFilms.append(duration)
        print(newFilms)
        newFilms.append(newFilms)
        newFilms=[]
sortedbyLength = sorted(films,key=lambda x:x[4],reverse=True)
print("%-5s %-20s %-20s %-20s %-20s %-20s"%("ID","Title","Year","Rating","Length (mins)","Genre"))
for i in range(len(sortedbyLength)):
    print("%-5s %-20s %-20s %-20s %-20s %-20s"%(sortedbyLength[i][0],sortedbyLength[i][1],sortedbyLength[i][2],sortedbyLength[i][3],sortedbyLength[i][4],sortedbyLength[i][5]))

输出是这样的:

['001', 'Ghostbusters', '2016', 'PG', 116]
['002', ' The Legend of Tarzan', '2016', 'PG', 109]
['003', 'Jason Bourne', '2016', 'PG', 123]
['004', 'The Nice Guys', '2016', 'R', 116]
['005', 'The Scret Life of Pets', '2016', 'G', 91]
['006', 'Star Treck Beyond', '2016', 'PG', 120]
ID    Title                Year                 Rating               Length (mins)        Genre     

这些打印语句的顺序错误,而不是我预期的顺序。谁能指出我在这里出错的地方? 谢谢!

【问题讨论】:

提示:让pandas 为您完成工作。将文件读入 DataFrame。 您希望newFilmsnewFilms.append(newFilms) ; newFilms=[] 之后会是什么?另外,你的文件是 CSV,你应该使用csv 模块来阅读它。 您希望它们按什么顺序排列?你有没有可能在你不想打电话的地方打电话给reverse 不,它们的顺序正确。你的最后一个 for 循环永远不会运行,因为 sortedbyLength 是空的,因为 films 是空的。 我认为您的意思是 films.append(newFilms) 而不是 newFilms.append(newFilms) 【参考方案1】:

您的电影列表为空,输出中的电影来自print(newFilms)。在循环结束时,您应该使用 films.append(newFilms) 而不是 newFilms.append(newFilms)

【讨论】:

非常感谢 - 现在运行良好!即使今天早上刚读完它也真的很有帮助!【参考方案2】:

你的第一个错误是你应该写films.append(newFilms)而不是newFilms.append(newFilms)。否则,sortedbyLength 将为空。

此外,您提供的输出与文件内容存在差异。在您的代码中,您正在读取一个名为 Genre 的字段,但输出不包含此字段。所以,我建议你也检查一下。

【讨论】:

非常感谢!它现在工作得很好——我昨晚做这个的时候一定很累!

以上是关于文本在 Python 中以错误的顺序打印的主要内容,如果未能解决你的问题,请参考以下文章

需要 Tkinter 帮助:尝试在按下按钮时将文本输入到条目中以在控制台中打印。我无法打印[重复]

如何在 Python 中以精确的精度打印双精度? [复制]

在 C 中以样式打印 [关闭]

在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]

在 Python 中以 1 退出

在python中读取文本奇怪的错误