从网上抓取数字,转换为int(),但不能相乘

Grabbed numbers from an online page, converted to int(), but cannot multiply

我写了一个Python脚本上线,抓取页面,解析页面,定位一串数字(如5678),存入num。现在,我需要对这个数字执行一些数学函数。为什么我不能那样做?

从页面抓取一行:数字是“6678”。因此,行 = "The number is '6678'"

c = ""
num = ''.join(c for c in line if c.isdigit())
int(num)
print num
try=(num*2)
print try

错误:

File "script", line 20
try=(num*2)
   ^
SyntaxError: invalid syntax

编辑: 将 'try' 更改为 't'。愚蠢的错误!但是,现在我在尝试使用 'num' 进行数学运算时遇到了一个新错误,进一步的代码:

new = (((num*3)+3)-1000)
print new

错误:

Traceback (most recent call last): File "602", line 22, in new = (((num*3)+2)-250) TypeError: coercing to Unicode: need string or buffer, int found

您需要实际重新分配投射号码:

num = int(num) # num is a string right now

发生此错误是因为您尝试使用名为 "try" 的变量,这是 python 的关键字。 此外,您没有保存数字的整数值。 最后,您的代码应如下所示:

line = "4567"
num = ''.join(c for c in line if c.isdigit())
int_num = int(num)
print int_num
try1=(int_num*2)
print try1

这是一个模拟示例。如果您使用漂亮的汤 return 页面的 html 内容,则需要拆分阅读内容。你想创建一个单词列表而不是字符列表,这样你就不会 运行 进入@Jon Clements 提出的整个 1 vs 12 问题。

my_list = []
for word in data.split(" "):
    if word.isdigit():
        my_list.append(word)
    my_list = [int(i) for i in my_list]
print sum(my_list) * 2

另外,try 是这样工作的:

try:
    pass #try to do some action
except:
    pass #if that action fails report