gpt4 book ai didi

python - 数据文件中的分割线

转载 作者:行者123 更新时间:2023-11-30 23:28:20 25 4
gpt4 key购买 nike

我正在努力解决数据文件中的分割行问题。这是几行示例:

1:0 2:120
1:1 2:131
1:2 2:26
1:3 2:568
1:4 2:176
1:5 2:28 3:549
1:6 2:17
1:7 2:6 3:217 4:401 5:636
1:8 2:139

我想将其拆分以获取每个值......也许以数组的形式:

((1, 2) , (0, 120))
((1, 2) , (1, 131))
...
((1, 2, 3, 4, 5) , (7, 6, 217, 401, 636))

意味着对于每一行,数组可以具有不同的维度。我试图将其分成两步,但它不起作用。

inf = open("datafile.txt", 'r')

for line in inf:
line.split()
for x in line.split():
x.split(':',1)

最佳答案

您可以使用 zip 对两个列表的元素进行分组。功能。

with open("Input.txt") as inf:
for line in inf:
print zip(*map(lambda x: map(int, x.split(":")), line.split()))

输出

[(1, 2), (0, 120)]
[(1, 2), (1, 131)]
[(1, 2), (2, 26)]
[(1, 2), (3, 568)]
[(1, 2), (4, 176)]
[(1, 2, 3), (5, 28, 549)]
[(1, 2), (6, 17)]
[(1, 2, 3, 4, 5), (7, 6, 217, 401, 636)]
[(1, 2), (8, 139)]

建议:with 打开文件总是好的。关键字,就像我在上面的代码中所示的那样。因为,即使程序因异常而失败,它也会负责关闭/释放资源。

说明:

zip是函数调用,首先评估参数。让我们来到*之后。 map(lambda x: map(int, x.split(":")), line.split()) ,我们应用 lambda 函数 lambda x: map(int, x.split(":"))line.split() 返回的字符串列表的每个元素(它在空白字符处分割句子并返回列表)。

每个分割词都会作为参数一一传递给 lambda 函数。如果我们采取第一种情况,首先 "1:0"将被发送到 lambda 函数 x ,我们根据 : 进行分割这将给出一个列表 ["1", "0"]然后我们申请 int函数,这将给出 [1, 0] 。因此,在分割所有行并应用 lambda 后,结果将是这样的

[[1, 0], [2, 120]]
[[1, 1], [2, 131]]
[[1, 2], [2, 26]]
[[1, 3], [2, 568]]
[[1, 4], [2, 176]]
[[1, 5], [2, 28], [3, 549]]
[[1, 6], [2, 17]]
[[1, 7], [2, 6], [3, 217], [4, 401], [5, 636]]
[[1, 8], [2, 139]]

现在每个列表中有两个元素。记住*我们决定稍后讨论,它将解压列表并将所有元素作为参数传递给 zip函数,像这样

zip([1, 0], [2, 120])

现在zip将选择所有第一个元素并将它们放入列表中,然后它将选择所有第二个元素并将它们放入列表中,依此类推。

这就是我们得到您期望的答案的方式。

关于python - 数据文件中的分割线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21673652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com