python如何用for循环找出多个相同的子标签
<body><p><t>T1标签</t><t>T2标签</t></p></body>想要得到的结果:<t>T1标签</t><t>T2标签</t>提示部分代码:...
<body>
<p>
<t>T1标签</t>
<t>T2标签</t>
</p>
</body>
想要得到的结果:
<t>T1标签</t>
<t>T2标签</t>
提示部分代码: 展开
<p>
<t>T1标签</t>
<t>T2标签</t>
</p>
</body>
想要得到的结果:
<t>T1标签</t>
<t>T2标签</t>
提示部分代码: 展开
1个回答
展开全部
其实这种问题,用正则表达式处理,非常简单。
# -*- coding: utf-8 -*-
s=u"""
<body>
<p>
<t>T1标签</t>
<t>T2标签</t>
</p>
</body>
"""
import re
labels= re.findall(r"<t>[\S]*</t>",s) #\S是非空白字符的意思
#labels= re.findall(r"(?<=<t>)[\S]*(?=</t>)",s) #这个是稍微高级点的用法
for i in labels:
print i
输出结果:
<t>T1标签</t>
<t>T2标签</t>
但是如果用单纯的循环查找,就很复杂了,如果你坚持,可以借鉴括号配对的算法。
更多追问追答
追问
这方法不能找出来的如果运行的话得到的结果是“T1标签”。因为这个方式取的是标签里边的值。而不是取标签。
追答
没有太明白你的意思。你是想只得到标签而不需要其对应的值吗?我写的代码运行的结果和你问题中要求的是一样的。注释掉的那一行只是供参考的。如果只想得到标签,re.findall(r"",s)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询