我的概念就是这个,但我的终端无法执行。
raw = ['a','1']
for i in raw:
if i.isdigit() == True:
raw.append(('number',int(i)))
else:
pass
print raw
错误类型告诉我'元组'对象没有属性'isdigit'。检测'数字字符串'并将其转换为真实数字的另一种方法是什么?
答案 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))