首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python从XML中提取文本

使用python从XML中提取文本
EN

Stack Overflow用户
提问于 2011-10-08 02:40:53
回答 6查看 52.3K关注 0票数 15

我有一个示例xml文件

代码语言:javascript
复制
<page>
  <title>Chapter 1</title>
  <content>Welcome to Chapter 1</content>
</page>
<page>
 <title>Chapter 2</title>
 <content>Welcome to Chapter 2</content>
</page>

我喜欢提取title标签和content标签的内容。

哪种方法提取数据更好,使用模式匹配还是使用xml模块。或者有没有更好的方法提取数据。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-08 02:49:49

已经有一个内置的XML库,特别是ElementTree。例如:

代码语言:javascript
复制
>>> from xml.etree import cElementTree as ET
>>> xmlstr = """
... <root>
... <page>
...   <title>Chapter 1</title>
...   <content>Welcome to Chapter 1</content>
... </page>
... <page>
...  <title>Chapter 2</title>
...  <content>Welcome to Chapter 2</content>
... </page>
... </root>
... """
>>> root = ET.fromstring(xmlstr)
>>> for page in list(root):
...     title = page.find('title').text
...     content = page.find('content').text
...     print('title: %s; content: %s' % (title, content))
...
title: Chapter 1; content: Welcome to Chapter 1
title: Chapter 2; content: Welcome to Chapter 2
票数 23
EN

Stack Overflow用户

发布于 2019-05-10 20:11:40

您还可以尝试使用此代码来提取文本:

代码语言:javascript
复制
from bs4 import BeautifulSoup
import csv

data ="""<page>
  <title>Chapter 1</title>
  <content>Welcome to Chapter 1</content>
</page>
<page>
 <title>Chapter 2</title>
 <content>Welcome to Chapter 2</content>
</page>"""

soup = BeautifulSoup(data, "html.parser")

########### Title #############
required0 = soup.find_all("title")
title = []
for i in required0:
    title.append(i.get_text())

########### Content #############
required0 = soup.find_all("content")
content = []
for i in required0:
    content.append(i.get_text())

doc1 = list(zip(title, content))
for i in doc1:
    print(i)

输出:

代码语言:javascript
复制
('Chapter 1', 'Welcome to Chapter 1')
('Chapter 2', 'Welcome to Chapter 2')
票数 2
EN

Stack Overflow用户

发布于 2019-10-18 11:00:39

代码:

代码语言:javascript
复制
from xml.etree import cElementTree as ET

tree = ET.parse("test.xml")
root = tree.getroot()

for page in root.findall('page'):
    print("Title: ", page.find('title').text)
    print("Content: ", page.find('content').text)

输出:

代码语言:javascript
复制
Title:  Chapter 1
Content:  Welcome to Chapter 1
Title:  Chapter 2
Content:  Welcome to Chapter 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7691514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档