[英]How to split a list by a character and add it to a new list
我想做的是用“;”分隔列表中的元素。 並將其添加到新列表中。 我當前的代碼是:
n = []
s = open("rankings.txt").readlines()
for i in s:
n[i] = s[i].split(';')[1]
s中的每個元素都包含“;”,因此它應該能夠在其中拆分每個元素。 這是s的內容。
['Team 1;12\n', 'Team 2;45\n', 'Team 3;66\n', 'Team 4;77\n', 'Team 5;8\n', 'Team 6;99\n', 'Team 7;22\n', 'Team 8;13\n', 'Team 9;46\n', 'Team 10;97\n', 'Team 11;64\n', 'Team 12;65\n', 'Team 13;32\n', 'Team 14;98\n', 'Team 15;78\n', 'Team 16;752\n', 'Team 17;72\n', 'Team 18;73\n', 'Team 19;76\n', 'Team 20;419\n', 'Team 21;48\n', 'Team 22;16\n', 'Team 23;469\n', 'Team 24;82\n', '\n']
我希望n包含[12、45、66 ...]
以下代碼應該可以完成您的期望。 代替readlines()
,只需使用open()
並運行一個循環即可有效地完成相同任務。
new_list = []
f = open("rankings.txt", "r")
for x in f:
temp = x.split(";")
new_list.append(int(temp[1]))
在注釋后進行編輯以將類型轉換為int
您可以通過列表理解來做到這一點。 這適用於您的情況,如果您遇到一些不匹配的情況,則可能需要根據碰到它的特定情況對它進行一些修改,但這並不難:
n = [int(x.split(';')[1]) for x in s if ';' in x]
s
是您的字符串列表。 請注意,if末尾是因為您的最后一項僅為'\\n'
,而int忽略了'\\n'
部分。 這些是在不同情況下可能需要修改的部分。 如果您想讓我擴展列表的含義,請在注釋中寫上。
這里有幾個問題:
for i in s
i
表示i
是列表中的字符串,而不是索引。 更改為for i in range(len(s))
以獲取整數。
n
是一個空列表,對於任何非負i
沒有n[i]
。 通過更改為n.append(...)
來添加新成員。
s
有成員,沒有;
(最后一個)。 也許添加一個if語句?
或者,您也可以這樣理解:
n = [int(x.split(';')[1]) for x in s if ';' in x]
下面的解決方案應該工作,list1是您的輸入列表。
num_list = []
for ele in list1:
ele = ele.rstrip("\n")
if ele:
num_list.append(ele.split(";")[1])
print (num_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.