我想根据下面的json文件计算组件的数量。TypeError:期望的字符串或类似字节的对象(Python)
这里是我现在:
# counter for the numbers of components
def get_numbers_devices(e, name, locator, counter=0):
if re.match(name, e.get(locator, None), re.I|re.M):
counter += 1
for child in e.get('children', []):
counter = get_numbers_devices(child, name, locator, counter)
return counter
例如:
num_memory = get_numbers_devices(data, 'bank:*', 'id') # memory banks
print(num_memory) # Output 2
然而,当我尝试使用下面的代码来算有多少磁盘有,它给了我TypeError。
num_hdd = get_numbers_devices(data, '\/dev\/sda', 'logicalname') # hdd Qty
print(num_hdd) # TypeError: expected string or bytes-like object
这似乎是我的正则表达式的问题,但我有点难以找出哪个部分导致了这个问题。
谢谢大家的进步。
JSON文件: dell.json
'data'可能是'bytes'而不是'str'。顺便说一句,没有必要在你的正则表达式中跳出斜杠; –
不要使用正则表达式解析json。改用'json'模块。 – thebjorn
@ Jean-FrançoisFabre'data'是一个字典,我从data = json.load(dell.json)获得。我试图删除逃逸斜线,但它仍然无法正常工作。 –