Python基于正则表达式拆分标签

时间:2015-10-14 15:51:22

标签: python regex

我想将以下标记<b size=5 alt=ref>拆分如下:

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 个答案:

答案 0 :(得分: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')]

答案 1 :(得分: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']}