У меня есть следующая строка.
DATE: 12242010Key Type: Nod32 Anti-Vir (30d trial) Key: a5B2s-sH12B-hgtY3-io87N-srg98-KLMNO
Мне нужно создать словарь, чтобы он был похож на
{
"DATE": "12242010",
"Key Type": "Nod32 Anti-Vir (30d trial)",
"Key": "a5B2s-sH12B-hgtY3-io87N-srg98-KLMNO"
}
Проблема в том, что строка не отформатирована
DATE: 12242010Key Type: Nod32 Anti-Vir (30d trial)
- нет пробела после даты перед типом ключа
- также было бы неплохо иметь некоторую проверку для ключа, например, если в каждом блоке ключа есть 5 символов и количество блоков
Я новичок в python и, более того, в регулярных выражениях.Большое спасибо.
Вот мой код.Я получаю строку из xpath.Почему я не могу использовать его в регулярных выражениях?
import re
import lxml.html as my_lxml_hmtl
tree = my_lxml_hmtl.parse("test.html")
text = tree.xpath("string(//*[contains(text(),'DATE')])")
# this works
print re.match('DATE:\s+([0-9]{8})\s*Key Type:\s+(.+)\s+Key:\s+((?:[^-]{5}(?:-[^-]{5})*))', 'DATE: 12242010Key Type: Nod32 Anti-Vir (30d trial) Key: a5B2s-sH12B-hgtY3-io87N-srg98-KLMNO').groups()
# and this doesn't work, why?
ss = str(text)
# print ss gives the same string which worked in re fabove
print re.match('DATE:\s+([0-9]{8})\s*Key Type:\s+(.+)\s+Key:\s+((?:[^-]{5}(?:-[^-]{5})*))', ss).groups()
, когда я пытаюсь использовать текст или str (текст) вместо 'ДАТА: 12242010 Тип ключа: Nod32 Anti-Vir (30-дневная пробная версия) Ключ:a5B2s-sH12B-hgtY3-io87N-srg98-KLMNO 'Я получаю ошибку AttributeError: у объекта' NoneType 'нет атрибута' groups '
Что здесь не так?