如何检测字符串列表中的数字并将其转换为真实数字?

时间:2014-02-09 08:03:47

标签: python string

我的概念就是这个,但我的终端无法执行。

raw = ['a','1']
for i in raw:
    if i.isdigit() == True:
        raw.append(('number',int(i)))
    else:
        pass


print raw

错误类型告诉我'元组'对象没有属性'isdigit'。检测'数字字符串'并将其转换为真实数字的另一种方法是什么?

3 个答案:

答案 0 :(得分:3)

语法错误是raw.append行上的括号。此外,您将通过附加到迭代的列表中获得一些奇怪的行为。您可以在理解中重建列表以避免这些:

raw = ['a','1']
raw = [('number', int(i)) if i.isdigit() else i for i in raw]
print raw

输出:

['a', ('number', 1)]

理解可以用手写,但你需要改变你的变量名:

raw = ['a', '1']
new_raw = []
for i in raw:
    if i.isdigit():  # no need for the == True here
        new_raw.append(('number', int(i)))
    else:
        new_raw.append(i)

答案 1 :(得分:0)

您收到语法错误,因为raw.append(('number',int(i))末尾的括号丢失了。我就是这样做的:

raw = ['a', '1']
for i, v in enumerate(raw):
    try:
        raw[i] = int(v)
    except ValueError:
        pass  # non-numeric

答案 2 :(得分:0)

第4行有一个语法错误,你有一个额外的括号。更改以下

    raw.append(('number',int(i))

    raw.append('number',int(i))