2015-10-14 2 views
0

Я хотел бы разделить следующий тег <b size=5 alt=ref> следующим образом:Python разделить теги на основе регулярных выражений

Open tag: b 
Parm: size=5 
Parm: alt=ref 

Однако, я попытался следующий код, чтобы разделить метки как группы, но он не работает:

temp = '<b size=5 alt=ref>' 
matchObj = re.search(r"(\S*)\s*(\S*)", temp) 
print 'Open tag: ' + matchObj.groups() 

Мой план состоит в том, чтобы разбить тэг на группы, а затем напечатать первую группу как открытый тег, а остальное как Parm. Можете ли вы предложить любую идею, которая поможет мне решить эту проблему?

Обратите внимание, что я читал теги из html-файла, но я упомянул здесь пример открытого тега, и я показал часть кода, с которым я застрял.

Благодаря

+2

есть причина вы не используете HTML парсер? –

+2

Если вы [искали] (https://www.google.com/webhp?sourceid=chrome-instant&rlz=1C1GTPM_enUS601US601&ion=1&espv=2&ie=UTF-8#q=c%2B%2B%20parse%20xml%20using%20regex), вы обнаружите, что [многие препятствуют] (https://stackoverflow.com/questions/4122624/would-you-implement-a-lightweight-xml-parser-with-regex), пытаясь разобрать XML/HTML/etc, используя regex, так как есть уже более надежные способы сделать это. – CoryKramer

ответ

1
tag_names = ["Open tag:","Parm:","Parm:"] 
import re 
# split on <,>,white space, and remove empty strings at 
# the start and at the end of the resulting list. 
tags = re.split(r'[<> ]','<b size=5 alt=ref>')[1:-1] 
# zip tag_names list and with list of tags 
print(list(zip(tag_names, tags))) 

[('Open tag:', 'b'), ('Parm:', 'size=5'), ('Parm:', 'alt=ref')] 
+0

Хотя этот ответ может быть правильным, добавьте некоторое объяснение. Отказ от основной логики более важен, чем просто предоставление кода, поскольку он помогает ОР и другим читателям исправить эту и подобные проблемы сами. – CodeMouse92

0
>>> import re 
>>> temp = '<b size=5 alt=ref>' 
>>> resList = re.findall("\S+", temp.replace("<","").replace(">","")) 
>>> myDict = {} 
>>> myDict["Open tag:"] = [resList[0]] 
>>> myDict["Parm:"] = resList[1:] 
>>> myDict 
{'Open tag:': ['b'], 'Parm:': ['size=5', 'alt=ref']} 
Смежные вопросы