如何按字符拆分列表并将其添加到新列表

2024-03-28 15:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是用“;”分隔列表中的元素,并将其添加到新列表中。我现在的代码是:

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…]


Tags: 代码intxt元素内容列表foropen
3条回答

你可以用列表来完成。 这适用于您的案例,如果您有一些不匹配的输入,您可能需要根据碰巧破坏它的特定案例对其进行一些修改,但这应该不是很困难:

n = [int(x.split(';')[1]) for x in s if ';' in x]

其中s是字符串列表。 请注意,结尾的if是因为最后一项只有'\n',int忽略了'\n'部分。这些是您在不同情况下可能需要修改的部分。 如果你想让我在评论中扩展列表理解的内容。你知道吗

下面的代码应该满足您的期望。与readlines()相反,只需使用open()并运行一个循环,它只会有效地完成相同的任务。你知道吗

new_list = []
f = open("rankings.txt", "r")
for x in f:
    temp = x.split(";")
    new_list.append(int(temp[1]))

在注释后编辑,将类型转换为int

这里有几个问题:

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

  2. n是一个空列表,没有任何非负的in[i]。通过更改为n.append(...)附加新成员。

  3. s中有没有;(最后一个)的成员。也许加一个if语句?

或者你可以用一种很好的理解力来写:

n = [int(x.split(';')[1]) for x in s if ';' in x]

相关问题 更多 >