我有一串像这样的东西:
"1000101101000111000011101000001001111000"
和这样的表:
[[97, '11'],
[111, '10'],
[32, '010'],
[115, '011'],
[100, '0011'],
[108, '0010'],
[110, '0001'],
[114, '0000']]
我想用int值(97,111,32,...)对字符串进行编码,但每次我只得到[111,108],因为它没有返回并只添加位置。谁能帮我理解为什么?这就是我所拥有的:
array_final = []
posSeg = 0
for i in range(len(tabela)):
if arrayJunto[posSeg:(posSeg+len(tabela[i][1]))]==tabela[i][1]:
array_final.append(tabela[i][0])
posSeg += len(tabela[i][1])
答案 0 :(得分:0)
我这样做了,希望它有所帮助:
t = [[97, '11'],
[111, '10'],
[32, '010'],
[115, '011'],
[100, '0011'],
[108, '0010'],
[110, '0001'],
[114, '0000']]
>>> s =""
>>> for l in t: s += str(l[0])
...
>>> s
'9711132115100108110114'
答案 1 :(得分:0)
首先,将这些值保留在tabela
中是不明智的 - 字典映射是一种更容易编码的方法:
map_dict = dict((t[1], t[0]) for t in tabela)
给出:
map_dict == {'0010': 108, '0011': 100, '0001': 110,
'0000': 114, '10': 111, '11': 97,
'011': 115, '010': 32}
其次,您正在迭代tabela
,而不是 arrayJunto
。它应该看起来像:
while posSeg < len(arrayJunto):
for key in map_dict:
if arrayJunto[posSeg:posSeg + len(key)] == key:
posSeg += len(key)
array_final.append(map_dict[key])
break
else:
break
两个break
确保:
这给了我:
array_final == [111, 108, 97, 32, 100, 111, 110, 97, 32, 114, 111, 115, 97]