我使用的是 Python 2.7.5,我有一个如下所示的列表:
('2047', '1971', '', '1919', '', '1878', '', '', '1760', '1731', '', '1667', '', '')
列表充满了漏洞,我想识别空行并用下一个非空行的数据填充这些空行。如果没有包含数据的下一行,我想将它们设置为 0。像这样:
('2047', '1971', '1919', '1919', '1878', '1878', '1760', '1760', '1760', '1731', '1667', '1667','0','0')
我如何使用 Python 执行此操作?我可以做一个简单的 for 循环来识别空行,但我不知道如何填充空白... 任何帮助将非常感激! 谢谢 马丁
最佳答案
您可以使用 itertools.groupby
为此:
>>> from itertools import groupby
>>> t = ('2047', '1971', '', '1919', '', '1878', '', '', '1760', '1731', '', '1667', '', '')
>>> out = []
>>> prev = None
for k, g in groupby(reversed(t)):
if k == '' and prev is None:
out.extend('0' for _ in g)
elif k == '' and prev is not None:
out.extend(prev for _ in g)
else:
for x in g:
out.append(x)
prev = x
...
>>> out.reverse()
>>> out
['2047', '1971', '1919', '1919', '1878', '1878', '1760', '1760', '1760', '1731', '1667', '1667', '0', '0']
关于python - 查找并替换列表宽度 Python 中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27100845/