У меня есть следующее, сохраненное в виде строки в переменной:
window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]
Как мне извлечь значения каждого элемента? Целью было бы иметь что-то вроде этого:
articleCondition = 'new'
categoryNr = '12345'
...






У вас есть список словарей. Используйте ключ словаря, чтобы получить значение.
Бывший:
dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]
print(dataLayer[0]["articleCondition"])
print(dataLayer[0]["categoryNr"])
Выход:
New
12345
В python есть много способов получить значение из строки, вы можете использовать regex, функцию Python eval и даже другие способы, о которых я, возможно, не знаю.
value = 'window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]'
value = value.split('=')[1]
data = eval(value)[0]
articleCondition = data['articleCondition']
с использованием regex
import re
re.findall('"articleCondition":"(\w*)"',value)
для regex вы можете проявить больше творчества, чтобы создать общий узор.
В зависимости от вашей цели, хотя бы это сработало, я бы не стал использовать функцию eval () !! - stackoverflow.com/questions/1832940/…
Большое спасибо. Я обнаружил, что версия с регулярным выражением является самой простой для меня для понимания и реализации.
Используйте json. Ваша строка:
>>> s = 'window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]'
Вы можете получить правую часть = с разделением:
>>> s.split('=')[1]
'[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]'
Затем проанализируйте его с помощью модуля json:
>>> import json
>>> t = json.loads(s.split('=')[1])
>>> t[0]['articleCondition']
'New'
Обратите внимание, что это работает, потому что у вас есть двойные кавычки в правой части. В JSON нельзя использовать одинарные кавычки.
Я думаю, что у OP есть строка типа
string = 'window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]'.