[英]Split list in and then join elements in sublists
給出以下列表:
my_list = ['A > 1', 'B > 2', '\n', 'C > 3', 'D > 4', '\n', 'E > 5', 'F > 6', '\n']
我想分開使用“ \\ n”,為此目的,我故意添加了“ \\ n”。
所以我試圖得到類似的東西:
my_list2 = [['A > 1', 'B > 2'], ['C > 3', 'D > 4'], ['E > 5', 'F > 6']]
然后,我想在每個子列表之間加入一個空格,如下所示:
my_list3 = [['A > 1 B > 2'], ['C > 3 D > 4'], ['E > 5 F > 6']]
也許這很容易做到,但是我已經嘗試了好幾個小時,卻不知道該怎么做。 我一直在搜索,還在Stackoverflow中看到了一些有關使用intertools.groupby
,但是我無法復制相同的結果。
我將不勝感激任何幫助!
非常感謝。
這是一種直接進入您期望的my_list3
:
>>> my_list = ['A > 1', 'B > 2', '\n', 'C > 3', 'D > 4', '\n', 'E > 5', 'F > 6', '\n']
>>> [[x] for x in ' '.join(my_list).strip().split(' \n ')]
[['A > 1 B > 2'], ['C > 3 D > 4'], ['E > 5 F > 6']]
如果您不需要將每個元素都包裝在自己的列表中,則它會更簡單,因為您不需要列表理解:
>>> ' '.join(my_list).strip().split(' \n ')
['A > 1 B > 2', 'C > 3 D > 4', 'E > 5 F > 6']
如果確實需要計算中間列表:
>>> from itertools import groupby
>>> [list(g) for k, g in groupby(my_list, lambda x: x != '\n') if k]
[['A > 1', 'B > 2'], ['C > 3', 'D > 4'], ['E > 5', 'F > 6']]
我建議您不要使用再次加入字符串然后拆分的答案。 groupby
(或等效的for循環)更好
>>> from itertools import groupby
>>> my_list = ['A > 1', 'B > 2', '\n', 'C > 3', 'D > 4', '\n', 'E > 5', 'F > 6', '\n']
>>> [list(g) for k, g in groupby(my_list, "\n".__ne__) if k]
[['A > 1', 'B > 2'], ['C > 3', 'D > 4'], ['E > 5', 'F > 6']]
您可以像這樣直接進入最后一步
>>> [" ".join(g) for k, g in groupby(my_list, "\n".__ne__) if k]
['A > 1 B > 2', 'C > 3 D > 4', 'E > 5 F > 6']
如果要列表列表,可以執行以下操作:
>>> [[i.strip()] for i in " ".join(my_list).strip().split("\n")]
[['A > 1 B > 2'], ['C > 3 D > 4'], ['E > 5 F > 6']]
如果只需要字符串,則可以執行以下操作:
>>> [i.strip() for i in " ".join(my_list).strip().split("\n")]
['A > 1 B > 2', 'C > 3 D > 4', 'E > 5 F > 6']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.