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>

提示部分代码:
展开
 我来答
百度网友29d79c26e1
推荐于2017-09-18 · TA获得超过665个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:96.5万
展开全部

其实这种问题,用正则表达式处理,非常简单。

# -*- 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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式