Pythonスクリプトで次の文字列を変換したい:
mystring='(5,650),(235,650),(465,650),(695,650)'
タプルのリストへ
mytuple=[(5,650),(235,650),(465,650),(695,650)]
次の結果が
print mytuple[0]
得られます。
(5,650)
Pythonスクリプトで次の文字列を変換したい:
mystring='(5,650),(235,650),(465,650),(695,650)'
タプルのリストへ
mytuple=[(5,650),(235,650),(465,650),(695,650)]
次の結果が
print mytuple[0]
得られます。
(5,650)
私は使用しますast.literal_eval
:
In [7]: ast.literal_eval('(5,650),(235,650),(465,650),(695,650)')
Out[7]: ((5, 650), (235, 650), (465, 650), (695, 650))
上記のように、これはタプルのタプルを返します。タプルのリストが必要な場合は、単にlist()
結果に適用します。
それはタプルではなく、リストです。
あなたが示したとおりの形式であることに依存できる場合は、おそらく次のようなことをしてリストに変換することができます。
mystring2 = mystring.translate(None, "()")
numbers = mystring2.split(",")
out = []
for i in xrange(len(numbers) / 2)
out.append((int(numbers[2 * i), int(2 * i + 1])))
これは、より優れたリスト ウォーキング メカニズムを使用して改善できる可能性があります。ただし、これはかなり明確なはずです。
タプルのタプルが本当に必要な場合は、最終的なリストを変換できます。
out2 = tuple(out)
使用するeval
mytuple = eval(mystring)
リストが必要な場合は、mystring を中括弧で囲みます
mytuble=eval("[%s]" % mystring)
これが「最も簡単な」解決策です (インポートするものは何もなく、Python 2.5 で動作しますast.literate_eval
) 。