如何在python中组合多个列表的元素?

2024-05-23 14:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是开始的代码。你知道吗

#!/usr/bin/python

import glob
import re

path = '/home/lhco/f1/*.cut'

files=glob.glob(path)

i=0
for i in range(len(files)):
    x = files[i]
    h = x
    i += 1
    f = open(h)
    for line in f:
            x = re.findall("([0-9\.[0-9][e][+-][0-9]+)",line)
            pb = map(float, x)

            if "ESC_00" in line: print pb

现在,输出是目录中3个文件的3个数字列表。我想做的是尝试从第一个列表中获取每个第一个元素,第二个等,然后将其添加到下一个列表的第一个元素,第二个等。我尝试在“pb”和sum和zip上再次使用map,但似乎没有多大帮助。 初始输出如下所示:

[0.08]
[0.009]
[0.0]
[0.0]
[0.0]
[0.0]
[0.03]
[0.005]
[0.0]
[0.0]
[0.0]
[0.0]
[0.08]
[0.008]
[0.0]
[0.0]
[0.0]
[0.0]

是否可以将所有6个数字的第一个元素相加?我需要试试元组吗?你知道吗

文件示例:

0 EVENTS SURVIVE AUXILIARY CUTS WITH 0.000e+00 PB RESIDUAL CROSS SECTION

EVENT SELECTION EFFICIENCY IS 100.000 PERCENT

CUT_KEY SURVIVE PB_AREA %_LOCAL %_TALLY
ESC_001      38 2.3e-02 007.317 007.317
ESC_002       9 5.5e-03 076.316 078.049
ESC_003       0 0.0e+00 100.000 100.000
ESC_004       0 0.0e+00 000.000 100.000
ESC_005       0 0.0e+00 000.000 100.000
ESC_006       0 0.0e+00 000.000 100.000

Tags: 文件pathinimportre元素map列表
1条回答
网友
1楼 · 发布于 2024-05-23 14:33:55
results = []
for filename in files:
    with open(filename, 'r') as file:
        result = []
        for line in file:
            match = map(float, re.findall("([0-9\.[0-9][e][+-][0-9]+)", line))
            result.extend(match)
    results.append(result)
answer = zip(*results)

这将为每个文件构建result列表和results列表,然后将它们压缩成answer,这是一个元组列表:

>>> zip(*results)
[(0.08, 0.03, 0.08), 
 (0.009, 0.005, 0.008), 
 (0.0, 0.0, 0.0), 
 (0.0, 0.0, 0.0), 
 (0.0, 0.0, 0.0), 
 (0.0, 0.0, 0.0)]

此外,正则表达式中还有一个输入错误(请参见regex101):

([0-9\.[0-9][e][+-][0-9]+)解析为

( [0-9\.[0-9] [e] [+-] [0-9]+ )

当我认为你想要:

( [0-9] \. [0-9] [e] [+-] [0-9]+ )

可以简化为(regex101):

\d\.\de[+-]\d+

相关问题 更多 >