Pythonで文字列を整数に変換するには?


Answers

あなたはリストの理解でこれを行うことができます:

T2 = [[int(column) for column in row] for row in T1]

内部リストの理解( [int(column) for column in row] 10進文字列のようなintableオブジェクトのシーケンスからintlistを作成しlist 。 外側のリストの理解( [... for row in T1]) )は、 T1各項目に適用された内部リストの理解の結果のリストを作成します。

いずれかの行にintで変換できないオブジェクトが含まれていると、コードスニペットが失敗します。 非小数の文字列を含む行を処理する場合は、よりスマートな関数が必要になります。

行の構造を知っている場合は、内部のリストの理解を行の関数への呼び出しで置き換えることができます。 例えば。

T2 = [parse_a_row_of_T1(row) for row in T1]
Question

私はこのようなMySQLのクエリからタプルのタプルを持っています:

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

私はすべての文字列要素を整数に変換し、リストのリストに戻したいと思います。

T2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]

私はevalそれを達成しようとしましたが、まだまともな結果を得ていませんでした。




Python 2のためのさらに別の機能的な解決策:

from functools import partial

map(partial(map, int), T1)

Python 3は少し面倒です。

list(map(list, map(partial(map, int), T1)))

これをラッパーで修正できます

def oldmap(f, iterable):
    return list(map(f, iterable))

oldmap(partial(oldmap, int), T1)



この関数を見る

def parse_int(s):
    try:
        res = int(eval(str(s)))
        if type(res) == int:
            return res
    except:
        return

その後、

val = parse_int('10')  # Return 10
val = parse_int('0')  # Return 0
val = parse_int('10.5')  # Return 10
val = parse_int('0.0')  # Return 0
val = parse_int('Ten')  # Return None

あなたも確認することができます

if val == None:  # True if input value can not be converted
    pass  # Note: Don't use 'if not val:'



T3=[]

for i in range(0,len(T1)):
    T3.append([])
    for j in range(0,len(T1[i])):
        b=int(T1[i][j])
        T3[i].append(b)

print T3



for str in T2 :
    return num(str)

多分それは、うまくいくでしょう




リスト内包表記の使用:

t2 = [map(int, list(l)) for l in t1]



int( )を入れるのではなく、 float( )を使って整数とともに小数点以下を使うことができます。




Related