私は以下の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'は' str'ではないでしょう。あなたの正規表現でスラッシュをエスケープする必要はありません。 –
正規表現でjsonを解析しないでください。代わりに 'json'モジュールを使用してください。 – thebjorn
@ Jean-FrançoisFabre 'data'はdictであり、data = json.load(dell.json)から取得します。エスケープスラッシュを削除しようとしましたが、それでも動作していません。 –