Python 如果<;var>;是无:不';我好像不知道

Python 如果<;var>;是无:不';我好像不知道,python,if-statement,nonetype,Python,If Statement,Nonetype,免责声明:我对python非常陌生,不知道自己在做什么,我在网上自学 我有一些代码看起来像这样 代码: from request import get # Ed: added for clarity myurl = URLBASE + args.key response = get(myurl) # check key is valid json = response.text # Ed: this is a requests.Response object print(json) if

免责声明:我对python非常陌生,不知道自己在做什么,我在网上自学

我有一些代码看起来像这样

代码:

from request import get # Ed: added for clarity

myurl = URLBASE + args.key
response = get(myurl)

# check key is valid
json = response.text # Ed: this is a requests.Response object 
print(json)

if json is None:
    sys.exit("Problem getting API data, check your key")

print("how did i get here")
null
how did i get here
输出:

from request import get # Ed: added for clarity

myurl = URLBASE + args.key
response = get(myurl)

# check key is valid
json = response.text # Ed: this is a requests.Response object 
print(json)

if json is None:
    sys.exit("Problem getting API data, check your key")

print("how did i get here")
null
how did i get here
但我不知道这怎么可能。。。它字面上说它在打印中为空,但在“if”中不匹配。任何帮助都将不胜感激


thx

所以我确信我仍然不完全理解,但这“修复”了我的问题

requests.Response对象
具有属性/方法
json
——因此我应该使用它,感谢wim,而不是
文本
。因此,如建议的那样,将代码更改为此(如下所示),可以使代码正常工作

from request import get

myurl = URLBASE + args.key
response = get(myurl)

# check key is valid
json = response.json()

if json is None:
    sys.exit("Problem getting API data, check your key")

print("how did i get here")
问题(对我来说是好奇的)仍然存在,我将如何执行if语句来确定字符串是否为null


感谢Ry和wim的帮助。

您从未解析过JSON,因此它是字符串
“null”
。不确定
get
是什么,但请尝试
json=response.json
。字符串
“null”
不是对象
None
。唯一的
None
None
本身。@Ry-有正确的想法,但您需要使用
response.json()
因为
response.json
会让你陷入类似的陷阱。
如果某个字符串==“null”
。在本例中,字符串不是
null
对象(Python中不存在该对象,称为
None
),而是包含
内容的字符串“null”
;也就是说,字符
n
u
l
l
,按顺序排列。感谢@Adam Smith,花了这么多时间,这很有效(您可能知道),现在我已经在代码中对它进行了测试,能够使它工作,并且更好地理解它和python。谢谢你的帮助。一个问题字符串可以为空吗?或者,如果字符串为null,是否填充了“null”?您想要一个内容为“null”的字符串,或者如果您想要比较stings,您将如何区分“null”(字符串)和(实际上)null(或空)之间的区别Python中只有一个null对象,它是singleton
None
。内容为
“null”
的字符串只是一个常规字符串。空字符串看起来像
(“空字符串”看起来像
None
,与“其他任何内容都为空”相同)。这实际上是您的问题,因为响应文本是文本“null”在Python中没有特殊意义。它被解析为JSON,JSON正确地将其识别为空对象,并适当地反序列化为
None