Python的isdigit()方法为负数返回False

-2 python integer

我有一个文本文件,我读到列表.该列表包含整数和字符串.

例如,我的列表可能如下所示:

["name", "test", "1", "3", "-3", "name" ...]
Run Code Online (Sandbox Code Playgroud)

现在,我想使用.isdigit()方法或isinstance()函数将所有数字转换为整数.例如:

for i in range len(mylist):
    if mylist[i].isdigit():
        mylist[i] =  int(mylist[i])
Run Code Online (Sandbox Code Playgroud)

问题是"-3".isdigit()例如会返回False.有关解决问题并将负数字串转换为负整数的简单解决方案的任何提示吗?

Mar*_*ers 8

该方法仅测试数字,而-不是数字.如果要检测整数,则需要测试int()并捕获ValueError异常:

for i, value in enumerate(mylist):
    try:
        mylist[i] = int(value)
    except ValueError:
        pass  # not an integer
Run Code Online (Sandbox Code Playgroud)

换句话说,没有必要明确测试; 只需转换并捕获异常.请求宽恕而不是请求许可.