[英]find an xml tag and replace the tag name with python
我正在解析的kml文件: http : //pastebin.com/kU5rPssk
我正在寻找与此正则表达式\\<name\\>(\\d+ \\@.*)\\<\\/name\\>
匹配的所有<name>
标记,然后操纵标记的文本。
这是我用来尝试测试正则表达式的代码:
import re
from bs4 import BeautifulSoup
#Open the KML file.
xmldoc = open('doc.kml', "r+")
soup = BeautifulSoup(xmldoc, "xml")
p = re.compile(r"\<name\>(\d+ \@.*)\<\/name\>")
result = re.findall(p, soup)
print result
我收到以下错误:
Traceback (most recent call last):
File ".\regex_test.py", line 10, in <module>
result = re.findall(p, soup)
File "C:\Python27\lib\re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
我究竟做错了什么?
将正则表达式传递给find_all()
的text
参数:
import re
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('doc.kml'), 'xml')
for name in soup.find_all('name', text=re.compile("\d+ @.*")):
print name
它打印:
<kml:name>13233 @ 2014-05-19 21:35:30 GMT (ACPU)</kml:name>
<kml:name>13233 @ 2014-05-19 21:36:30 GMT (ACPU)</kml:name>
<kml:name>13233 @ 2014-05-19 21:37:30 GMT (ACPU)</kml:name>
...
<kml:name>13233 @ 2014-05-19 22:28:30 GMT (ACPU)</kml:name>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.