在字符串中解析整数和实数类型的数字

时间:2011-10-06 10:15:26

标签: python parsing

我有一个以下格式的字符串列表:

[ "%AB0.1.100", "%TB4.1.15" ]

我如何解析这个字符串,我想取真实类型列表“0.1”的第1个元素和整数类型的“100”和真实类型的“4.1”以及整数类型的“15”

我怎么能在循环中做到这一点?

3 个答案:

答案 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的优点:在一般情况下更灵活。