![](/img/trans.png)
[英]I need help appending words from a text file while creating a new list in list every time there is a new document
[英]Creating a new list for every line in a text file?
因此,我正在嘗試創建一個程序,該程序將以多種方式(字母,數字順序等)對文本文件的內容進行排序。 為此,我需要為文本文件中的每個項目創建一個新列表。 說我的文本文件如下所示:
Isaac 2 5 3
Aaron 9 8 10
一種排序方法(字母順序,僅顯示最高分)的輸出應如下所示:
Aaron 10
Isaac 5
為此,我需要為文本文件中的每一行創建一個新列表,這樣我可以以多種方式對它進行排序,並且可以刪除任何不相關的信息,即得分較低。 我努力了:
mylist = fileName.split("\n")
乃至:
mylist = fileName.readlines()
但是這些只是創建一個大列表,每行都有一個新項目,而不是每行一個單獨的列表。 是否可以用這兩種方法或我從未聽說過的另一種方法來執行此操作?
在第一次迭代中,假設f
是文件對象,您可以簡單地執行
mylist = [line.split() for line in f]
這給您一個列表列表,例如
[["Isaac", "2", "5", "3"], ["Aaron", "9", "8", "10"]]
但是,如果要對數字進行排序,則必須先將字符串轉換為整數(或浮點數?),因為"9" > "10"
。 如何執行此操作取決於數據的結構。
假設行的第一個元素是名稱,之后的其他所有內容都是整數,則可以使用
mylist = []
for line in f:
items = line.split()
mylist.append([items[0]] + [int(item) for item in items[1:]])
結果:
[['Isaac', 2, 5, 3], ['Aaron', 9, 8, 10]]
使用Pandas ,這是一種方法。
注意:我是熊貓的菜鳥。
制作了一個數據文件:
$ cat data.txt
Isaac 2 5 3
Aaron 9 8 10
然后在ipython中使用熊貓:
In [3]: import pandas as pd
In [4]: df = pd.read_table('data.txt', delim_whitespace=True, header=None)
In [5]: df
Out[5]:
0 1 2 3
0 Isaac 2 5 3
1 Aaron 9 8 10
In [6]: newdf = df.sort(0).apply(lambda x: pd.Series([x[0],x[1:].max()]),axis=1)
In [7]: newdf
Out[7]:
0 1
1 Aaron 10
0 Isaac 5
In [8]: print(newdf.to_string(header=False, index=False))
Aaron 10
Isaac 5
In [9]: newdf.values
Out[9]:
array([['Aaron', 10],
['Isaac', 5]], dtype=object)
In [10]: newdf.values.tolist()
Out[10]: [['Aaron', 10], ['Isaac', 5]]
簡化此建議將不勝感激。
好的,在嘗試了提供的答案之后,我發現了一種愚蠢的簡單方法來獲取所需信息:
for line in file.readlines():
items = line.split()
items = sorted(items, reverse = True)
del items[-2:]
print(items)
輸出如下:
['Isaac', '5']
['Aaron', '9']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.