1

Pythonで文字列をintに変換するにはどうすればよいですか?この配列があると言います

['(111,11,12)','(12,34,56)'] to [(111,11,12),(12,34,56)]

どんな助けでも感謝します

4

5 に答える 5

8
import ast
a = "['(111,11,12)','(12,34,56)']"
[ast.literal_eval(b) for b in ast.literal_eval(a)]
# [(111, 11, 12), (12, 34, 56)]

EDIT : @DSM が示唆するように、(文字列ではなく) 文字列のリストがある場合は、それを変更する必要があります。

a = ['(111,11,12)','(12,34,56)']
[ast.literal_eval(b) for b in a]
# [(111, 11, 12), (12, 34, 56)]
于 2012-12-27T14:50:05.997 に答える
0

あなたの質問を読むと、文字列のリストがあることがわかります:

l = ['(111,11,12)','(12,34,56)']

それを数値のリストに変換したい...

# some cleaning first
number_list = [x.strip('()').split(',') for x in l]
for numbers in number_list:
    numbers[:] = [int(x) for x in numbers]
print number_list

そのリストの理解度の解析については申し訳ありませんが、奇妙に見えますが、非常に一般的な python イディオムであり、慣れておく必要があります。

于 2012-12-27T15:58:09.057 に答える
0

あなたはいくつかの再試行することができます:

import re
src = ['(111,11,12)', '(12,34,56)']
[tuple([int(n) for n in re.findall(r"(\d+),(\d+),(\d+)", s)[0]]) for s in src]
于 2012-12-27T15:21:57.790 に答える
0

楽しむ!

def customIntparser(n):
    exec("n="+str(n))
    if type(n) is list or type(n) is tuple:
        temps=[]
        for a in n:
            temps.append(customIntparser(str(a)))
        if type(n) is tuple:
            temps=tuple(temps)
        return temps
    else:
        exec("z="+str(n))
        return z

サンプル テスト:

>>>s = "['(111,11,12)','(12,34,56)']"
>>>a=customIntparser(s)
>>> a
# [(111, 11, 12), (12, 34, 56)]
>a[0][1]
# 11
于 2012-12-27T17:26:05.180 に答える
-2

int() キーワードを使用して、文字列を int に変換できます。

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> int('42')
42

しかし、あなたが与えた例は、単一の整数ではなく、タプル全体に対してこれを行いたいことを示しているようです。その場合は、組み込みの eval 関数を使用できます。

>>> eval('(111,111)')
(111, 111)
于 2012-12-27T14:52:38.567 に答える