在Python中替换XML元素的文本内容

时间:2015-11-04 02:27:17

标签: python xml

我想我错过了一些基本的东西。我想访问XML元素的文本并替换它。例如,如果我有这个:
<name>Fred</name>我希望能够将Fred更改为John

我已经阅读了很多关于ElementTree和BeautifulSoup的网站,但我仍然被困住了。有人可以提供一个非常简单的例子吗?

3 个答案:

答案 0 :(得分:1)

喜欢这个吗?

  1. 使用BeautifulSoup的soup.find()方法查找HTML标记:

    >>> from bs4 import BeautifulSoup
    >>> BeautifulSoup('<html><body><name>Fred</name><html><body>')
    >>> soup = BeautifulSoup('<html><body><name>Fred</name><html><body>')
    >>> name = soup.find('name')
    >>> name
    <name>Fred</name>
    >>> 
    
  2. 使用tag.string = newstring替换它的字符串:

    >>> name.string = 'John'
    >>> name
    <name>John</name>
    >>> soup
    <html><body><name>John</name><html><body></body></html></body></html>
    >>> 
    
  3. 然后我们完成了,请查看the document了解更多详情。

答案 1 :(得分:1)

python2.7版美丽的汤

from BeautifulSoup import BeautifulSoup
soup=BeautifulSoup("<name>Fred</name>")
soup.find("name").string="John"
print(soup)

输出

<name>John</name>

替代使用正则表达式

import re
htmltext="<name>John</name>"
new_htmltext=re.sub("(<name>).*(</name>)","\\1Fred\\2",htmltext)
print(new_htmltext)

答案 2 :(得分:0)

为什么不将它解析为文本?数据的格式并不总是需要使用特殊的库来处理它。

>>> a = 'stuff<name>Fred</name>otherstuff'
>>> a.replace('<name>Fred</name>', '<name>John</name>')
'stuff<name>John</name>otherstuff'