为什么我不能投一个lxml.etree.\u ElementUnicodeResult到字符串?

2024-10-04 09:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

print(type(players[1]))


for player in players:
    player = str(player)

print(type(players[1]))

输出为:

^{pr2}$

我需要将这个ElementUnicode对象转换成一个字符串,这样我就可以调用它的子字符串了,但是这个for循环没有这样做。当我把它转换成一个字符串并同时调用substring时,控制台显示:str object没有object substring,这没有意义。在

 str(players[i]).substring()

有什么想法可以解释为什么会是这种情况,以及我怎样才能在这个对象上调用substring?在


Tags: 对象字符串inforobjecttype情况substring
2条回答

如果您正在运行python2,请尝试:unicode(players[i])

_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]))

输出:

^{pr2}$

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

for player in players:
    player = str(player)

print(type(players[1]))

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

另外,str没有substring属性。XPath有一个substring()函数。也许你就是这么想的?在

相关问题 更多 >