Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检测字符串列表中的数字并将其转换为真实数字?_Python_String - Fatal编程技术网

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

Python 如何检测字符串列表中的数字并将其转换为真实数字?,python,string,Python,String,我的想法是这样的,但我的终端无法执行 raw = ['a','1'] for i in raw: if i.isdigit() == True: raw.append(('number',int(i))) else: pass print raw 错误类型告诉我“tuple”对象没有属性“isdigit”。检测“数字字符串”并将其转换为真实数字的另一种方法是什么?语法错误是raw.append行上的括号。此外,将迭代添加到列表中会出现一些奇怪

我的想法是这样的,但我的终端无法执行

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


print raw

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

语法错误是
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)

出现语法错误是因为
raw.append(('number',int(i))
末尾缺少括号。我将这样做:

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

第4行有一个额外的括号,出现语法错误

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


缺少结束括号。
raw.append(('number',int(i)))
在迭代过程中对iterable进行变异是一个好主意吗?你也不需要else条件,因为它什么都不做。@Theftheye,哦,我的天,我犯了一个可怕的错误。我不明白你到底想要什么。输出应该是什么?看起来海报想要一个元组(“number”,int(I))完美的答案,非常感谢。@mhlester我昨天投票支持了你的答案。谢谢。
    raw.append('number',int(i))