0

リストがあります:

['(128, 134)', '(134, 146)', '(134, 150)', '(137, 143)', '(137, 146)', '(137, 150)', '(143, 150)']

int のタプルのリストに変換したいので、このリストは次のようになります。

[(128, 134), (134, 146), (134, 150), (137, 143), (137, 146), (137, 150), (143, 150)]

4

6 に答える 6

3

文字列をPython式として安全に評価するモジュールliteral_evalから使用できます。ast

>>> a = ['(128, 134)', '(134, 146)', '(134, 150)', '(137, 143)', '(137, 146)', '(137, 150)', '(143, 150)']
>>> from ast import literal_eval
>>> map(literal_eval, a)
[(128, 134), (134, 146), (134, 150), (137, 143), (137, 146), (137, 150), (143, 150)]
于 2013-04-23T06:39:38.647 に答える
0
def to_tuple(x):
    ints = x.strip('()').split()
    return tuple(int(m.strip(',')) for m in ints)

print [to_tuple(a) for a in aa] # where aa is your string
于 2013-04-23T06:39:17.690 に答える
0

evalだけで十分です

[eval(i) for i in a]
于 2013-04-23T09:23:31.187 に答える
0
>>> L = ['(128, 134)', '(134, 146)', '(134, 150)', '(137, 143)', '(137, 146)', '(137, 150)', '(143, 150)']
>>> [tuple(map(int, s.strip('()').split(', '))) for s in L]
[(128, 134), (134, 146), (134, 150), (137, 143), (137, 146), (137, 150), (143, 150)]
于 2013-04-23T06:52:12.260 に答える