我想根據下面的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)獲得。我試圖刪除逃逸斜線,但它仍然無法正常工作。 –