【问题标题】:Split elements by \n inside a list [duplicate]在列表中按 \n 拆分元素 [重复]
【发布时间】:2026-01-11 01:00:02
【问题描述】:

我有这个清单:

test_results = ['Test1\nTest2', 'Grade A\nGrade B']

我想用 '\n' 分割元素并将它们保存在另一个列表中,如下所示:

test_results = [['Test 1, Grade A'], ['Test B', 'Grade B']]

我正在努力寻找一种方法来做到这一点...你能帮帮我吗?

【问题讨论】:

  • 你试过什么?
  • test_results = [i.split('\n') for i in test_results] 将是一个起点。您可能还想查看 zip 来旋转列表的结果列表。
  • 这(至少是第一部分)可以使用docs.python.org/3/tutorial/…在一行中实现。

标签: python list split


【解决方案1】:

您可以将mapstr.splitlines 一起使用

>>> x = list(map(str.splitlines, test_results))
>>> x
[['Test1', 'Test2'], ['Grade A', 'Grade B']]

现在您可以使用zip 获得您想要的:

>>> [[a,b] for a,b in zip(x[0], x[1])]
[['Test1', 'Grade A'], ['Test2', 'Grade B']]

【讨论】:

  • 谢谢你告诉我,我没有仔细看,我会更新答案
  • @ChihebNexus,我认为它现在符合预期的输出
【解决方案2】:

你可以使用分割线。

y = [x.splitlines() for x in test_results]

输出

[['Test1', 'Test2'], ['Grade A', 'Grade B']]

【讨论】:

  • PO 正在搜索此输出:[['Test 1, Grade A'], ['Test B', 'Grade B']]
  • 这肯定是一个错字。为什么用户会想要那个?
【解决方案3】:

1-liners 有很多,但这可能是最容易理解的

def split_list(list):
    for string in list:  # For each string in my list
        list[list.index(string)] = string.split(
            "\n")  # Splitting the string a "\n"

    return test_results


test_results = ['Test1\nTest2', 'Grade A\nGrade B']
print(split_list(test_results))

【讨论】:

  • 您的输出错误。 PO 正在搜索此输出:[['Test 1, Grade A'], ['Test B', 'Grade B']]