首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过在转换为列表时为空数据添加空白来维护列数据的位置?

如何通过在转换为列表时为空数据添加空白来维护列数据的位置?
EN

Stack Overflow用户
提问于 2022-02-05 05:25:09
回答 1查看 25关注 0票数 0

我所拥有的数据中,每行最多有6列中有一定数量的数据,而不是在所有列中。有时,数据位于第3和第4列,有时是第4和第6列,等等。如果列中没有数据,我希望在每一行中创建一个列表(并扩展列表以继续添加行),并在列表中添加一个空白项。本质上说,每一行都有6条数据,即使有些数据是空白的。列之间的间距不是固定的,或者至少不能保证是固定的。

当每一行都有6条数据时,我就没有问题了,因为我可以加入、拆分和追加来构建我的列表。该问题涉及少于6个项的行。

例如,请参阅下面的数据。

代码语言:javascript
复制
CCW40109           D+L             -0.13                         0.60
CCW40109           4D+L+OBE                        8.77         17.38
CCW40109           4D+L-OBE        -8.56                       -17.65
CCW40109           4D+L+SSE                                     24.22          12.04

下面是我希望列表在每一行中运行的方式。包含空列的24个空元素的单个列表。

代码语言:javascript
复制
[CCW40109,D+L,-0.13, ,0.60, ,CCW40109,4D+L+OBE, ,8.77,17.38, ,CCW40109,4D+L-OBE,-8.56, ,-17.65, ,CCW40109,4D+L+SSE, , ,24.22,12.04]

我一直把头撞在墙上。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2022-02-05 05:32:40

就像这样:

代码语言:javascript
复制
#123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
data = """\
CCW40109           D+L             -0.13                         0.60
CCW40109           4D+L+OBE                        8.77         17.38
CCW40109           4D+L-OBE        -8.56                       -17.65
CCW40109           4D+L+SSE                                     24.22          12.04"""

cols = [0, 19, 36, 50, 64, 79, 999]

alldata = []
for line in data.splitlines():
    fields = [ line[c1:c2-1].rstrip() for c1,c2 in zip(cols,cols[1:]) ]
    alldata.append( fields )

from pprint import pprint
pprint(alldata)

输出:

代码语言:javascript
复制
[['CCW40109', 'D+L', '0.13', '', ' 0.60', ''],
 ['CCW40109', '4D+L+OBE', '', ' 8.77', '17.38', ''],
 ['CCW40109', '4D+L-OBE', '8.56', '', '17.65', ''],
 ['CCW40109', '4D+L+SSE', '', '', '24.22', '12.04']]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70995507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档