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/