python - 为什么我无法将 lxml.etree._ElementUnicodeResult 转换为字符串?

标签 python html xpath lxml

print(type(players[1]))


for player in players:
    player = str(player)

print(type(players[1]))

输出是:

 <class 'lxml.etree._ElementUnicodeResult'>
 <class 'lxml.etree._ElementUnicodeResult'>

我需要将此 ElementUnicode 对象转换为字符串,以便我可以在其上调用子字符串,但此 for 循环没有执行此操作。当我将其转换为字符串并同时调用 substring 时,控制台显示:str object has no object substring,这没有任何意义。

 str(players[i]).substring()

对于为什么会出现这种情况以及如何在该对象上调用 substring 有什么想法吗?

最佳答案

_ElementUnicodeResult 转换为 str 不是问题。完整演示:

from lxml import etree

doc = """
<root>
 <player>ABC</player>
 <player>DEF</player>
</root>"""

root = etree.fromstring(doc)
players = root.xpath("player/text()")

print(type(players[1]))

# Cast each player to a plain string 
players = [str(p) for p in players]

print(type(players[1]))

输出:

<class 'lxml.etree._ElementUnicodeResult'>
<class 'str'>
<小时/>

在问题中,您有以下代码:

for player in players:
    player = str(player)

print(type(players[1]))

这不会改变 for 循环之外的任何内容。 type(players[1]) 将与以前相同。

此外,str确实没有substring属性。 XPath 有一个 substring() 函数。也许这就是你的想法?

关于python - 为什么我无法将 lxml.etree._ElementUnicodeResult 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800438/

相关文章:

python - 如何在 Django 中创建自定义权限(用户角色)?

xml - 两个大列表的高效映射

selenium - WebDriver PageObjects 的代码生成

xml - 如何在 Go 中使用 XPath 从 XML 中获取值

python - 在 python 2 或 python 3 中编写 csv 文件的便携方式

python - 在Python中的独立(非阻塞)线程中检测按键

python - 使用python在PostgreSQL中选择变量

javascript - 如何获取模型表单按钮的点击事件?

html - 与纸张元素和本地存储的 polymer 数据绑定(bind)

javascript - JQuery scroll()/scrollTop() 在 IE 或 Firefox 中不工作