“int”和“str”实例之间不支持Python“<”

2024-10-16 17:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是新来的编码,我刚刚开始。我见过许多相同错误的例子,但我不确定如何将其应用到我的代码中。我正在尝试按分数的顺序对文本文件进行排序。这是我当前的代码:

ScoresFile = open("Top Scores.txt","r") 
newScoresRec = []
ScoresRec = []
for row in ScoresFile:
 ScoresRec = row.split(",")
 username = ScoresRec[0]
 Bestscores = int(ScoresRec[1])
 newScoresRec.append(username)
 newScoresRec.append(Bestscores)
 ScoresRec.append(newScoresRec)
 newScoresRec = []
sortedTable = sorted(ScoresRec,key=lambda x:x[1])
for n in range (len(sortedTable)):
 print(sortedTable[n][0],sortedTable[n][1])
ScoresFile.close()

文本文件仅采用以下简单格式:

“用户名”,“分数”- 示例:BO15,78 任何帮助都将不胜感激


Tags: 代码in编码for错误username分数row
3条回答

试试这个,让我知道它是否有效:

scores_rec = []
with open("Top Scores.txt", "r") as scores_file:
    lines = scores_file.readlines()

    for line in lines:
        s_line = line.rstrip().split(",")
        scores_rec.append([s_line[0], int(s_line[1])])

sorted_table = sorted(scores_rec, key=lambda x: x[1])

for item in sorted_table:
    print(item[0], item[1])

问题的一部分是您正在将其追加到拆分列表中

ScoresRec = row.split(",")
...
ScoresRec.append(newScoresRec)

不建立清单清单,;在循环结束时,您将使用添加的两个附加值对文件的最后一行进行排序

因此,您正在对包含几个字符串和一个列表的列表进行排序,排序键是一个包含字符串和int的列表,因此会出现错误

文本文件(file.txt):

"MORETHANSMALLER",2
"BIGGER",10
"SMALLER",1
"UNDERBIGGER",9
"MIDDLE",5

代码(csv_reader.py):

import csv

with open('file.txt', newline='') as csvfile:
  rows = list(csv.reader(csvfile, delimiter=',', quotechar='"'))
  rows.sort(key = lambda x: int(x[1]))

print('From 1 to 10:')
print(rows)
rows.reverse()
print('From 10 to 1:')
print(rows)

结果:

From 1 to 10:
[['SMALLER', '1'], ['MORETHANSMALLER', '2'], ['MIDDLE', '5'], ['UNDERBIGGER', '9'], ['BIGGER', '10']]
From 10 to 1:
[['BIGGER', '10'], ['UNDERBIGGER', '9'], ['MIDDLE', '5'], ['MORETHANSMALLER', '2'], ['SMALLER', '1']]

不要手动解析CSV文件。使用python CSV库。这将帮助您避免使用引号的陷阱

相关问题 更多 >