我有一个以下格式的字符串列表:
[ "%AB0.1.100", "%TB4.1.15" ]
我如何解析这个字符串,我想取真实类型列表“0.1”的第1个元素和整数类型的“100”和真实类型的“4.1”以及整数类型的“15”
我怎么能在循环中做到这一点?
答案 0 :(得分:1)
>>> import re
>>> l = [ "%AB0.1.100", "%TB4.1.15" ]
>>> out = []
>>> for item in l:
... m = re.search(r"(\d+\.\d+)\.(\d+)", item)
... f = float(m.group(1))
... i = int(m.group(2))
... out.append((f, i))
...
>>> out
[(0.1, 100), (4.1, 15)]
答案 1 :(得分:1)
l = [ "%AB0.1.100", "%TB4.1.15" ]
for el in l:
endOfFloat = el.rfind('.')
f = float(el[3:endOfFloat])
i = int(el[endOfFloat+1:])
答案 2 :(得分:0)
我想我不会将re
用于此。我会使用切片和split
:
for elem in l:
# elem: "%AB0.1.100"
two = elem[3:] # elem: "0.1.100"
ps = two.split(".")
assert len(ps) == 3
# ps: "0" , "1", "100"
f = float("%s.%s" % (ps[0],ps[1]))
i = int(ps[2])
我认为你可以很容易地调整它。 re
的优点:在一般情况下更灵活。