[英]How to convert numbers from file with strings to integer in a list in python
我正在嘗試讀取一個包含名稱和數字的文件,但我不知道如何將數字轉換為整數,因為它們與字符串在同一行。 我也想用數字對它進行排序。
這就像一個記分牌系統,我想打印前 5 名球員的分數和他們的名字。 在他們玩完游戲后,他們的分數會被附加到一個文本文件中。 文本文件將包含更多玩家的分數和姓名。
該文件如下所示(我們將其稱為 data.txt):
Jack, 14
Amy, 2
Rock, 58
Jammy, 44
閱讀后,這是列表的樣子:
['Jack, 14', 'Amy, 2', 'Rock, 58', 'Jammy, 44']
這是我到目前為止所做的:
file = open("data.txt", "r")
Data = file.readlines()
Data = [line.rstrip('\n') for line in Data]
我試過這些:
Data.sort(key = lambda x: x[1])
Data = list(map(int, Data))
但是,它顯示一個錯誤,因為同一行上還有一個字符串,我不想將其轉換為整數。
我希望輸出的是:
Amy, 2
Jack, 14
Jammy, 44
Rock, 58
我只想知道如何使用換行符按升序對數字(分數)進行排序。
排序時可以使用以下鍵:
data = ['Jack, 14', 'Amy, 2', 'Rock, 58', 'Jammy, 44']
data.sort(key=lambda s: int(s.split(',')[1].strip()))
print(data)
輸出
['Amy, 2', 'Jack, 14', 'Jammy, 44', 'Rock, 58']
這個想法是在','
上拆分字符串','
然后從第二個元素中刪除任何尾隨空格並轉換為 int。
最好成對存儲名稱和分數而不是字符串
from operator import itemgetter as ig
sorted_pairs = sorted(((pair[0], int(pair[1])) for pair in (line.split(', ') for line in file.readlines())), key = ig(0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.