Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中按姓氏对从txt文件导入的名称列表进行排序_Python_Sorting - Fatal编程技术网

如何在Python中按姓氏对从txt文件导入的名称列表进行排序

如何在Python中按姓氏对从txt文件导入的名称列表进行排序,python,sorting,Python,Sorting,我今天刚刚安装了Python,我想按姓氏对从文本文件导入的名称列表进行排序。txt文件中的每个名称都由逗号和空格分隔。我之所以经常使用打印,是因为我想遵循每一步,看看哪里出了问题。 起初,它只是返回了我输入的同一组名称,我认为这是因为名称周围没有撇号。所以我加入了studenten1,试图解决这个问题 f = open('namenlijst.txt', 'r') studenten = f.read() f.close() print(studenten) studenten1 = "'"

我今天刚刚安装了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']
预期产出:

布兰森·卡尔霍恩、哈里·克拉克、李·科尔多瓦、卡勒姆·弗格森、阿曼达·福勒、艾弗里·希尔、路易斯·马龙、杰特·奥布莱恩、杰里米·安德伍德


当您使用
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']

f.read()
是一个字符串,因此您的输出将对包含所有名称的单个字符串进行排序。您将需要执行
f.read().split(',')
而不是将输出放入列表中(假设您所写的所有条目都在一行)。

请编辑您的问题,因为它现在确实不可读。这对我不起作用。。文件“test2.py”,第4行,在studenten1=studenten.split(“,”)AttributeError:“list”对象没有属性“split”