соответствие регулярных выражений и попасть в список Python - PullRequest
0 голосов
/ 28 апреля 2018

В качестве строки в переменной сохранено следующее:

window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]

Как извлечь значения каждого элемента? Целью было бы иметь что-то вроде этого:

articleCondition = 'new'

categoryNr = '12345'

...

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

В Python есть много способов получить значение из строки, вы можете использовать regex, функцию Python eval и даже больше, чем я могу не знать.

Метод 1

value = 'window.dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]'
value = value.split('=')[1]
data = eval(value)[0]
articleCondition = data['articleCondition']

Метод 2

с использованием regex

import re
re.findall('"articleCondition":"(\w*)"',value)

для regex вы можете быть более изобретательны, чтобы создать общий шаблон.

0 голосов
/ 28 апреля 2018

Используйте 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'

Обратите внимание, что это работает, потому что у вас есть двойные кавычки в RHS. Одинарные кавычки не допускаются в JSON.

0 голосов
/ 28 апреля 2018

У вас есть список словаря. Используйте ключ словаря, чтобы получить значение.

Ex:

dataLayer=[{"articleCondition":"New","categoryNr":"12345","sellerCustomerNr":"88888888","articleStatus":"Open"}]
print(dataLayer[0]["articleCondition"])
print(dataLayer[0]["categoryNr"])

Выход:

New
12345
...