我有一个列表,我想提取一个对应于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。
如果您有任何想法,请帮助!
答案 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)