我今天刚安装了Python,我想按它们的姓对从文本文件导入的名称列表进行排序。txt文件中的每个名称都由逗号和空格分隔。我之所以经常使用打印,是因为我想跟踪每一步,看看哪里出了问题。一开始,它只是返回了我输入的同一组名字,我想这是因为名字周围没有撇号。所以我加入了studenten1来尝试解决这个问题。
f = open('namenlijst.txt', 'r')
studenten = f.read()
f.close()
print(studenten)
studenten1 = "'" + studenten.replace(", ", "', '") + "'"
print (studenten1)
print(sorted(studenten1, key=lambda x: x.split(",")[-1]))输入:
Jeremy Underwood, Louis Malone, Jett Obrien, Lee Cordova, Avery Hill, Amanda Fowler, Callum Ferguson, Hallie Clark, Branson Calhoun输出:
Jeremy Underwood, Louis Malone, Jett Obrien, Lee Cordova, Avery Hill, Amanda Fowler, Callum Ferguson, Hallie Clark, Branson Calhoun
'Jeremy Underwood', 'Louis Malone', 'Jett Obrien', 'Lee Cordova', 'Avery Hill', 'Amanda Fowler', 'Callum Ferguson', 'Hallie Clark', 'Branson Calhoun'
[',', ',', ',', ',', ',', ',', ',', ',', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", 'A', 'A', 'B', 'C', 'C', 'C', 'C', 'F', 'F', 'H', 'H', 'J', 'J', 'L', 'L', 'M', 'O', 'U', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'd', 'd', 'd', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'g', 'h', 'i', 'i', 'i', 'i', 'k', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'm', 'm', 'm', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 's', 's', 's', 't', 't', 'u', 'u', 'u', 'u', 'v', 'v', 'w', 'w', 'y', 'y']预期产出:
'Branson Calhoun','Hallie Clark','Lee Cordova','Callum弗格森‘,'Amanda Fowler','Avery Hill','Louis Malone','Jett Obrien','Jeremy Underwood'
’
发布于 2020-04-17 11:58:39
当您使用read时,输出是一个字符串,您可以使用split方法在列表中转换输入:
f = open('namenlijst.txt', 'r')
studenten = f.read()
f.close()
studenten1 = studenten.split(",")
print(sorted(studenten1, key=lambda x: x.split()[-1]))你有你想要的输出:
[' Branson Calhoun', ' Hallie Clark', ' Lee Cordova', ' Callum Ferguson', ' Amanda Fowler', ' Avery Hill', ' Louis Malone', ' Jett Obrien', 'Jeremy Underwood']发布于 2020-04-17 12:03:46
f.read()是一个字符串,因此您的输出正在对包含所有名称的单个字符串进行排序。您需要执行f.read().split(','),而不是将输出放入列表(假设所有条目都在单行上,正如您所写的)。
https://stackoverflow.com/questions/61271011
复制相似问题