当前位置: 首页 > 知识库问答 >
问题:

提取标记及其内容的正则表达式模式

葛景龙
2023-03-14

考虑到这一点:

input = """Yesterday<person>Peter</person>drove to<location>New York</location>"""

如何使用正则表达式模式提取:

person: Peter
location: New York

这很好,但我不想硬编码标签,它们可以更改:

print re.findall("<person>(.*?)</person>", input)
print re.findall("<location>(.*?)</location>", input)

共有2个答案

公良照
2023-03-14

避免使用正则表达式解析HTML,而是使用HTML解析器。

这里有一个使用美丽汤的例子:

from bs4 import BeautifulSoup    

data = "Yesterday<person>Peter</person>drove to<location>New York</location>"
soup = BeautifulSoup(data)

print 'person: %s' % soup.person.text
print 'location: %s' % soup.location.text

打印:

person: Peter
location: New York

注意代码的简单性。

希望这有帮助。

宇文育
2023-03-14

使用为工作设计的工具。我碰巧喜欢lxml,但他们是另一个

>>> minput = """Yesterday<person>Peter Smith</person>drove to<location>New York</location>"""
>>> from lxml import html
>>> tree = html.fromstring(minput)
>>> for e in tree.iter():
        print e, e.tag, e.text_content()
        if e.tag() == 'person':          # getting the last name per comment
           last = e.text_content().split()[-1]
           print last


<Element p at 0x3118ca8> p YesterdayPeter Smithdrove toNew York
<Element person at 0x3118b48> person Peter Smith
Smith                                            # here is the last name
<Element location at 0x3118ba0> location New York

如果您是Python新手,那么您可能希望访问此站点,获取包括LXML在内的许多软件包的安装程序。

 类似资料:
  • 问题内容: 输入线在下面 你能帮我写一个Java正则表达式来提取 从上方输入线? 问题答案: 更加简洁:

  • 我正在寻找一个正则表达式,它必须在不同类型的HTML标记之间提取文本。 对于前任: <代码> <代码> <代码> 我找到了这个特殊的片段

  • 我有一根绳子,看起来像这样:

  • 我正在努力想出一个正则表达式,它只能在单词的开头找到符号。例如: 这里: 但不是这里:

  • 我想验证输入的代码是否是HTML代码(必须以<代码> 我试着这么做 但是我有一个问题需要在代码中做一个\n,我需要验证第一个和结束标签(=

  • 本文向大家介绍正则表达式提取img的src,包括了正则表达式提取img的src的使用技巧和注意事项,需要的朋友参考一下 要匹配的字符串:<img src=image/ad1.gif width="128" height="36"/><img src='image/ad2.gif' width="128" height="36" /> 正则表达式:<img[\s]+src[\s]*=[\s]*(([