如何使用isintance函数检查对象是否为python列表
在第17行中,调用json_dumps()函数将如何使用isintance函数检查对象是否为python列表,python,Python,在第17行中,调用json_dumps()函数将[u'checkout\\\.google\\.com',u'wallet\\.google\\.com']转换为[checkout\\.google\\.com”,“wallet\.google\.com] 然后在第20行中,isinstance函数检查列表。如果对象是一个列表,它将返回true,否则返回false,但它返回false它应该是true,不是吗 在第23行中,data1变量包含数据变量的一个缩进值,并且还调用了isintance函数
[u'checkout\\\.google\\.com',u'wallet\\.google\\.com']
转换为[checkout\\.google\\.com”,“wallet\.google\.com]
然后在第20行中,isinstance
函数检查列表。如果对象是一个列表,它将返回true,否则返回false,但它返回false它应该是true,不是吗
在第23行中,data1变量包含数据变量的一个缩进值,并且还调用了isintance
函数来检查列表对象,该函数返回true
为什么会发生这种情况有没有合适的方法来检查对象是否是列表,以及为什么数据和数据1即使看起来相同也不相等?调用的结果是一个JSON格式的字符串,因此在执行该行之后:
import json
import requests
r=requests.get('https://raw.githubusercontent.com/AliasIO/Wappalyzer/master/src/apps.json')
wappalyzer=r.json()
def enumarate_keys(parent_key,json_obj):
x=0
enumarated_keys={}
for key in json_obj[parent_key]:
enumarated_keys[x]=key
x=x+1
return enumarated_keys
# enumerate tech
list_of_apps=enumarate_keys('apps',wappalyzer)
# enumerate properties of a tech
properties=enumarate_keys(list_of_apps[0],wappalyzer['apps'])
data=json.dumps(wappalyzer['apps'][list_of_apps[0]]['script']) #[u'checkout\\.google\\.com', u'wallet\\.google\\.com']
print '1st check i got false:\n'
print data #> ["checkout\\.google\\.com", "wallet\\.google\\.com"]
print isinstance(data, list)
print '\n\n'
print 'second check i got true:\n'
data1=["checkout\\.google\\.com", "wallet\\.google\\.com"]
print isinstance(data1, list)
print('\ncheck if data and data1 are equal:')
if data == data1:
print 'equal'
else:
print 'not equal'
数据
是一个字符串。这就是为什么isinstance(data,list)
返回False
你能用行号发布代码吗?当你写打印类型(data)
时你会得到什么?这肯定会给你一个答案,你可以按照你展示的那样做:isinstance(thing,list)
。更好的是,一般来说,你不检查它,就好像你有一个元组,它仍然可以;参见“鸭子打字”。除此之外,请简化为一个.dumps生成一个编码列表的Python字符串,而不是Python列表。
data=json.dumps(wappalyzer['apps'][list_of_apps[0]]['script']) #[u'checkout\\.google\\.com', u'wallet\\.google\\.com']