簡體   English   中英

如何按字符分割列表並將其添加到新列表

[英]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'部分。 這些是在不同情況下可能需要修改的部分。 如果您想讓我擴展列表的含義,請在注釋中寫上。

這里有幾個問題:

  1. for i in s i表示i是列表中的字符串,而不是索引。 更改為for i in range(len(s))以獲取整數。

  2. n是一個空列表,對於任何非負i沒有n[i] 通過更改為n.append(...)來添加新成員。

  3. 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.

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