Python 如何选择文档中的所有文本节点?
我有一份文件:Python 如何选择文档中的所有文本节点?,python,xpath,lxml,Python,Xpath,Lxml,我有一份文件: <html> <body> <p>Hello World!</p> <p>Goodbye!</p> </body> </html> 只生成一个平面字符串数组: ['\n ', 'Hello World!', '\n ', 'Goodbye!', '\n '] 所有结构信息都丢失了,所以我无法知道每个字符串在文档中的位置。有更好的办法吗 以下是完
<html>
<body>
<p>Hello World!</p>
<p>Goodbye!</p>
</body>
</html>
只生成一个平面字符串数组:
['\n ', 'Hello World!', '\n ', 'Goodbye!', '\n ']
所有结构信息都丢失了,所以我无法知道每个字符串在文档中的位置。有更好的办法吗
以下是完整的来源:
import lxml.html
import sys
with open(sys.argv[1]) as fin:
text_string = fin.read()
root = lxml.html.document_fromstring(text_string)
text_elements = root.xpath("//text()")
print text_elements
您可以使用
getparent()
访问父元素:
导入lxml.html
>>>text_字符串=“”
...
... 你好,世界
... 再见
...
... '''
>>>root=lxml.html.document\u fromstring(text\u string)
>>>text_elements=root.xpath(“//text()”)
>>>对于文本元素中的t:
... 打印t.getparent(),类型(t),报告(t)
...
“\n”
“你好,世界!”
“\n”
“再见!”
“\n”
啊,我以为它只是一个简单的字符串,但事实证明它不是。谢谢
import lxml.html
import sys
with open(sys.argv[1]) as fin:
text_string = fin.read()
root = lxml.html.document_fromstring(text_string)
text_elements = root.xpath("//text()")
print text_elements
>>> import lxml.html
>>> text_string = '''<html>
... <body>
... <p>Hello World!</p>
... <p>Goodbye!</p>
... </body>
... </html>'''
>>> root = lxml.html.document_fromstring(text_string)
>>> text_elements = root.xpath('//text()')
>>> for t in text_elements:
... print t.getparent(), type(t), repr(t)
...
<Element body at 0x193b170> <class 'lxml.etree._ElementStringResult'> '\n '
<Element p at 0x193b1d0> <class 'lxml.etree._ElementStringResult'> 'Hello World!'
<Element p at 0x193b1d0> <class 'lxml.etree._ElementStringResult'> '\n '
<Element p at 0x193b290> <class 'lxml.etree._ElementStringResult'> 'Goodbye!'
<Element p at 0x193b290> <class 'lxml.etree._ElementStringResult'> '\n '