从字符串中提取值[Python]

2024-10-03 06:20:05 发布

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

我有两种类型的字符串,如下所示:

#Type 1:
1633659717.630234 DEBUG src/main.rs                    L662  : Binning flow x.x.x.x:xxxx->y.y.y.y:yyyy/UDP: bins (tensors) are [6, 3, 0, 1, 0, 1].
#Type 2: 
1633659717.630234 DEBUG src/main.rs                    L662  : Binning known flow moments for type "VTC": bins (tensors) are [6, 3, 0, 1, 0, 1]

我想提取字符串末尾的数组和类型(如果存在)。我尝试使用split()函数来实现,这样字符串就可以转换为数组,并且我可以使用索引来提取值。但由于存在不均匀的空白,索引无法正常工作。我还尝试先执行strip(),但是数组中的空白没有被删除,因此split()也不能正常工作。我希望数组在分割操作后成为单个元素,以便可以利用索引。有什么有效的方法可以做到这一点吗?我已经放置了空格,所以字符串看起来和我看到的一模一样。 我可以提取数组,但是如果存在类型,我如何从字符串中提取数组和类型呢

代码:

with open('abc.log','r') as dataFile:
    lines = dataFile.readlines()
    for line in lines:
        if line.__contains__('Binning'):
           print (line.split('are ')[1])

输出:

[6, 3, 0, 1, 0, 1].

但这种代码效率不高。我必须有两种逻辑来提取值。有没有简单易行的方法


Tags: 字符串debugsrc类型maintypeline数组
1条回答
网友
1楼 · 发布于 2024-10-03 06:20:05

您可以像这样使用re

import ast
import re

ast.literal_eval(re.search("\[.*?\]", my_string).group(0))

输入:

my_string="""
#Type 1:
1633659717.630234 DEBUG src/main.rs                    L662  : Binning flow x.x.x.x:xxxx->y.y.y.y:yyyy/UDP: bins (tensors) are [6, 3, 0, 1, 0, 1]."""

输出:

[6, 3, 0, 1, 0, 1]

相关问题 更多 >