首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列表分组到特定的组中

将列表分组到特定的组中
EN

Stack Overflow用户
提问于 2019-11-13 18:35:36
回答 2查看 64关注 0票数 0

我想知道是否有可能将列表转换为特定的组,稍后我可以将它们放在表格格式中。

这是我需要分组的输出,我将它们转换成一个列表,这样我就可以很容易地以表格的方式对它们进行划分。

代码语言:javascript
运行
复制
f=open("sample1.txt", "r")
f.read()

下面是输出:

代码语言:javascript
运行
复制
'0245984300999992018010100004+14650+121050FM-12+004699999V0203001N00101090001CN008000199+02141+01971101171ADDAY141021AY241021GA1021+006001081GA2061+090001021GE19MSL   +99999+99999GF106991021999006001999999KA1120N+02111MD1210141+9999MW1051REMSYN10498430 31558 63001 10214 20197 40117 52014 70544 82108 333 20211 55062 56999 59012 82820 86280 555 60973=\n'

这是我已经做过的事情。我已经成功地将其更改为一个列表,从而产生了以下输出:

代码语言:javascript
运行
复制
with open('sample1.txt', 'r') as file:
data = file.read().replace('\n', '')
print (list(data))

输出:

'0','2','4','5','9','8','4','3','0','0','9','9','9','9','2','0','1','8','0','1','1',‘1’,'0','0','0',‘0’'0','4','+','1','4','6','5','0','+','1','2','1','0','5','0','F','M','-','1','2','+','0','0','4','6','9','9','9','9','9','V','0','2','0','3','0','0','1','N','0','0','1','1','0','0','9','0','0','0','1','C','N','0','0','8','0','0','0','1','9','9','+','0','2','1','4','1','+','0','1','9','7','1','1','0','1','1','7',“1”,“A”,“D”,“D”,“A”,“Y”,“1”,“4”,“1”,“0”,“2”,“1”,“A”,“Y”,“2”,“4”,“1”,“0”,“2”,“1”,“G”,“A”,“1”,“0”,“2”,“1”,'+','0','0','6','0','0','1','0','8','1','G','A','2','0','6','1','+','0','9','0','0','0','1','0','2','1','G','E','1','9','M','S','L','+','+','9','9',‘+ ','9','9',’+ ','9','9','9','9','G','F','1','0','6','9','9','1','0','2','1','9','9','9','9','0','0','6','0','0','1','9','9','9','9','9','K','A','1','1',“2”,“0”,“N”,“+”,“0”,“2”,“1”,“1”,“1”,“M”,“D”,“1”,“2”,“1”,“0”,“1”,“4”,“1”,“+”,“9”,“9”,“9”,“M”,“W”,“1”,'0','5','1','R','E','M','S','Y','N','1','0','4','9','8','4','3','0',‘','3','1','5','5','8',’','6','3','0','0','1','1','0','2','1','4',‘','2','0','1','1','9','7',’','4','0','1','1','7',‘','5','2','0',’1‘'4',‘','7','0','5','4','4','8','2','1','0','8','3','3','3',’3 ','2','2','1','1',‘','5','5','0','6','2',‘','5','6','9','9','9',’','5','9','0','1','2',‘','8','8','2','2','2','8','6',’2 ','8','0',‘','5','5',’','6','0','9','7','3','=‘

我的目标是将它们分成以下几类:

代码语言:javascript
运行
复制
0245,984300,99999,2018,01,01,0000,4,+1.... 

属于每一列的位数是预先确定的,例如,第一列总是有4位,第二列总是有6位,依此类推。

我在考虑把它们连接起来。但我不确定这是否可能。

EN

回答 2

Stack Overflow用户

发布于 2019-11-13 19:11:23

您可以使用operator.itemgetter

代码语言:javascript
运行
复制
from operator import itemgetter

g = itemgetter(slice(0, 4), slice(4, 10))
with open('sample1.txt') as file:
    for line in file:
        print(g(line))

或者更好的是,您可以使用zip和itertools.accumulate动态地制作切片

代码语言:javascript
运行
复制
indexes = [4, 6, ...]
g = itemgetter(*map(slice, *map(accumulate, zip([0]+indexes, indexes))))

然后继续进行之前的操作

票数 2
EN

Stack Overflow用户

发布于 2019-11-14 23:43:42

如果你真的想要使用这些数据,我建议给所有的东西命名,并仔细检查所有的长度是否有意义。所以首先你要做的就是

代码语言:javascript
运行
复制
with open('sample1.txt', 'r') as file:
    data = file.read().rstrip('\n"')
    first, second, *rest = data.split()

    if len(first) != 163:
        raise ValueError(f"The first part should be 163 characters long, but it's {len(first)}")
    if len(second) != 163:
        raise ValueError(f"The second part should be  characters long, but it's {len(first)}")

所以现在你有3个变量

  • first is "0245984300999992018010100004+14650+121050FM-12+004699999V0203001N00101090001CN008000199+02141+01971101171ADDAY141021AY241021GA1021+006001081GA2061+090001021GE19MSL"
  • second is "+99999+99999GF106991021999006001999999KA1120N+02111MD1210141+9999MW1051REMSYN10498430"
  • rest is ['31558', '63001', '10214', '20197', '40117', '52014', '70544', '82108', '333', '20211', '55062', '56999', '59012', '82820', '86280', '555', '60973']

然后重复这个想法

代码语言:javascript
运行
复制
date, whatever, whatever2, whatever3 = first.split('+')

然后为了解析第一部分,我只需要一个列表,如下所示

代码语言:javascript
运行
复制
something = date[0:4]
something_else = date[4:10]
third_thing = date[10:15]
year = [15:19]
month = [19:21]
day = [21:23]

诸若此类。然后,您可以在分析它们的代码中使用所有这些变量。

如果这是某种标准,你应该寻找一个可以解析这样的字符串的库,或者自己编写一个。

显然,更好地命名变量

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58835192

复制
相关文章

相似问题

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