4

Pythonスクリプトで次の文字列を変換したい:

mystring='(5,650),(235,650),(465,650),(695,650)'

タプルのリストへ

mytuple=[(5,650),(235,650),(465,650),(695,650)]

次の結果が print mytuple[0]得られます。

(5,650)
4

3 に答える 3

13

私は使用します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()結果に適用します。

于 2011-09-26T12:30:49.043 に答える
1

それはタプルではなく、リストです。

あなたが示したとおりの形式であることに依存できる場合は、おそらく次のようなことをしてリストに変換することができます。

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)
于 2011-09-26T12:28:30.387 に答える
1

使用するeval

mytuple = eval(mystring)

リストが必要な場合は、mystring を中括弧で囲みます

mytuble=eval("[%s]" % mystring)

これが「最も簡単な」解決策です (インポートするものは何もなく、Python 2.5 で動作しますast.literate_eval) 。

于 2011-09-26T12:36:09.397 に答える