Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python在二维列表中合并单元格上的行_Python_Arrays_List_Multidimensional Array_Merge - Fatal编程技术网

python在二维列表中合并单元格上的行

python在二维列表中合并单元格上的行,python,arrays,list,multidimensional-array,merge,Python,Arrays,List,Multidimensional Array,Merge,我想合并2d列表中的单元格,新行合并到下一个空行中。 与设计这个的逻辑斗争。我解析了一个html表,并将其转换为二维列表,希望合并由空行分隔的行。 例如 结果应该是: new_data = [[ad, be,cf] [qtm, run, svo] [gj, hk, il]] 这是我的职责,我在这方面进展缓慢 def _merge_data_cells(table_grid): header, data = table_grid if header is None or data

我想合并2d列表中的单元格,新行合并到下一个空行中。 与设计这个的逻辑斗争。我解析了一个html表,并将其转换为二维列表,希望合并由空行分隔的行。 例如

结果应该是:

new_data = [[ad, be,cf]
[qtm, run, svo]
[gj, hk, il]]
这是我的职责,我在这方面进展缓慢

def _merge_data_cells(table_grid):
    header, data = table_grid
    if header is None or data is None:
        return
    offset_row = True
    while offset_row:
        for i, row in enumerate(data):
            if is_empty(row):
                offset_row = False
                break
            for cell in row:

    return header, data
提前感谢您的帮助。

您可以使用
zip
itertools.groupby
创建一个列表理解,以实现以下目的:

>>> from itertools import groupby

>>> [[''.join(x) for x in zip(*j)] for i, j in groupby(data, lambda x: x[0]!='') if i]
[['ad', 'be', 'cf'], ['qtm', 'run', 'svo'], ['gj', 'hk', 'il']]
其中,
数据
变量包含以下值:

data = [['a', 'b', 'c'],
       ['d', 'e', 'f'],
       ['','','']
       ['q', 'r', 's'],
       ['t', 'u', 'v'],
       ['m', 'n', 'o'],
       ['','',''],
       ['g', 'h', 'i'],
       ['j', 'k', 'l']]

假设您正在使用字符串,请使用
itertools.groupby
any

In [6]: data = [['a', 'b', 'c'],
   ...: ['d', 'e', 'f'],
   ...: ['','',''],
   ...: ['q', 'r', 's'],
   ...: ['t', 'u', 'v'],
   ...: ['m', 'n', 'o'],
   ...: ['','',''],
   ...: ['g', 'h', 'i'],
   ...: ['j', 'k', 'l']]

In [7]: from itertools import groupby

In [8]: grouped = groupby(data, any)

In [9]: [list(map(''.join, zip(*g))) for k, g in grouped if k]
Out[9]: [['ad', 'be', 'cf'], ['qtm', 'run', 'svo'], ['gj', 'hk', 'il']]

请阅读并向我们展示您的尝试。如果你向社区展示你尝试过的东西,你更有可能得到答案。你到底在用什么?字符串?@juanpa.arrivillaga是的,我正在处理字符串
In [6]: data = [['a', 'b', 'c'],
   ...: ['d', 'e', 'f'],
   ...: ['','',''],
   ...: ['q', 'r', 's'],
   ...: ['t', 'u', 'v'],
   ...: ['m', 'n', 'o'],
   ...: ['','',''],
   ...: ['g', 'h', 'i'],
   ...: ['j', 'k', 'l']]

In [7]: from itertools import groupby

In [8]: grouped = groupby(data, any)

In [9]: [list(map(''.join, zip(*g))) for k, g in grouped if k]
Out[9]: [['ad', 'be', 'cf'], ['qtm', 'run', 'svo'], ['gj', 'hk', 'il']]