从列表中提取确定的值

时间:2018-02-21 10:32:14

标签: python split

我有一个列表,我想提取一个对应于totalsec的数字。我继续使用split方法构成列表列表然后提取totalsec但是我得到了一个错误" list没有属性split"。

以下是我的列表:['nbresets:0,totalsec:14,lossevtec:0,lossevt:0,sevlossec:0,sevloss:0,paclosevtec:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0,paclosevt:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0,dellosevtec:0:0:0:0:0:0:0:0:0:0:0,dellosevt:0:0:0:0:0:0:0:0:0:0:0,dursevlossec:0:0:0:0:0:0:0:0:0:0:0:0,dursevloss:0:0:0:0:0:0:0:0:0:0:0:0,nbfailures:0,notif:2']我要从此列表中提取的数字为14。

如果您有任何想法,请帮助!

3 个答案:

答案 0 :(得分:0)

您不能直接在列表上执行拆分,只能对字符串执行拆分(因为列表已经拆分)。因此,遍历您的字符串列表并拆分它们。

我会缩短代码以使其更具可读性,只需将其替换为您的列表。

strings = ['nbresets:0,totalsec:14,lossevtec:0,lossevt:0']
for s in strings:
    # first split by comma to get the single entries
    for line in s.split(','):
        params = line.split(':')
        if params[0] == 'totalsec':
            print(params[1]) # this should return 14

答案 1 :(得分:0)

为什么使用列表作为容器?您的列表只有一个条目(''之间的所有内容)。而且你只能在字符串上使用split。 只需将字符串拆分为一个列表即可。然后迭代列表并通过再次拆分来提取键/值对:

myString = 'nbresets:0,totalsec:14,lossevtec:0,lossevt:0,sevlossec:0,sevloss:0,paclosevtec:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0,paclosevt:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0,dellosevtec:0:0:0:0:0:0:0:0:0:0:0,dellosevt:0:0:0:0:0:0:0:0:0:0:0,dursevlossec:0:0:0:0:0:0:0:0:0:0:0:0,dursevloss:0:0:0:0:0:0:0:0:0:0:0:0,nbfailures:0,notif:2'
result = {}
for item in myString.split(","):
    key, value = item.split(':', 1)
    result[key] = value

print(result['totalsec'])

答案 2 :(得分:0)

您也可以尝试: -

for i in a:  #a is your list of data here
    gen = i.split(",")
    result = [x for x in gen if x.startswith('totalsec')] #which can be dynamic
    for st in result:
        name,value = st.split(":")
        print(value)