だから私は次のようなタプルのリストを持っています:
[
('Worksheet',),
('1a', 'Calculated'),
('None', 'None', 'None', 'None', 'None'),
('1b', 'General'),
('1b', 'General', 'Basic'),
('1b', 'General', 'Basic', 'Data'),
('1b', 'General', 'Basic', 'Data', 'Line 1'),
('1b', 'General', 'Basic', 'Data', 'Line 2'),
('None', 'None', 'None', 'None', 'None'),
('1c', 'General'),
('1c', 'General', 'Basic'),
('1c', 'General', 'Basic', 'Data'),
('None', 'None', 'None', 'None', 'None'),
('2', 'Active'),
('2', 'Active', 'Passive'),
('None', 'None', 'None', 'None', 'None'),
...
]
各タプルの長さは 1 ~ 5 です。これで終わるには、リストを再帰的に削減する必要があります。
[
('Worksheet',),
('1a', 'Calculated'),
('None', 'None', 'None', 'None', 'None'),
('1b', 'General', 'Basic', 'Data', 'Line 1'),
('1b', 'General', 'Basic', 'Data', 'Line 2'),
('None', 'None', 'None', 'None', 'None'),
('1c', 'General', 'Basic', 'Data'),
('None', 'None', 'None', 'None', 'None'),
('2', 'Active', 'Passive'),
('None', 'None', 'None', 'None', 'None'),
...
]
基本的に、次の行が前の行のすべてに一致する場合 +1 は、同じ階層を持つタプルの最大長まで削除します。
したがって、私の例に見られるように、タプルの最初の項目である 3 行が1c
あったため、最長に短縮されました。