我有一个函数:无效字面对于int
import urllib2
import json
id = u'asadasd58'
if not id.isdigit:
url = 'http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key='+SteamKey+'&vanityurl='+id
file = urllib2.urlopen(url).read()
file = json.loads(file, 'utf-8')
if file['response']['success'] == 1:
print file['response']['steamid']
else:
print 0
else:
print int(id)
它应该像这样的工作:如果64位SteamID(或只是一个数字)被提供,它只是打印出来。如果它不只是一个数字,我们试图得到它是否是一个虚空网址,并解决真正的64位ID,如果我们无法解决(文件['response'] ['success'] == 42),那么我们返回0.但是,当你提供上面的id时,它会尝试对它进行整型,即使它不是数字。为什么?
Traceback (most recent call last): File "test.py", line 13, in <module> print int(id) ValueError: invalid literal for int() with base 10: 'asadasd58'
尽量不要使用'id'作为变量名,这是一个Python的方法,如果你将其覆盖,能如果您尝试使用它,则会在该行的更多位置抛出一些奇怪的错误。 – Ffisegydd