我有一个包含字符串的元组的元组:

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]]

相关:

转换 str -> int 转换列表[str] ->列表[int]


当前回答

不要使用int(),而是使用float(),这样可以同时使用小数和整数。

其他回答

看这个函数

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

Then

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:'

不要使用int(),而是使用float(),这样可以同时使用小数和整数。

使用列表推导式:

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

如果它只是一个元组的元组,像rows=[map(int, row) for row in rows]这样的东西就可以了。(这里有一个列表理解和一个map(f, lst)的调用,它等于[f(a) for a in lst]

Eval并不是你想要做的,以防在你的数据库中由于某种原因存在类似__import__("os").unlink("importantsystemfile")的东西。 总是验证你的输入(如果没有其他,异常int()将引发,如果你有错误的输入)。

试试这个。

x = "1"

X是一个字符串,因为它周围有引号,但它里面有一个数字。

x = int(x)

因为x里面有数字1,我可以把它变成一个整数。

要查看字符串是否是数字,可以这样做。

def is_number(var):
    try:
        if var == int(var):
            return True
    except Exception:
        return False

x = "1"

y = "test"

x_test = is_number(x)

print(x_test)

它应该打印为IDLE True,因为x是一个数字。

y_test = is_number(y)

print(y_test)

它应该打印为IDLE False,因为y不是一个数字。