簡體   English   中英

如何將帶有字符串的文件中的數字轉換為python列表中的整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM