为何无法将lxml.etree._ElementUnicodeResult转为字符串?转换及调用substring遇阻
解决你的两个Python问题:列表元素转换失败&字符串无substring方法
嘿,我来帮你理清这两个头疼的小问题:
1. 为什么循环里的类型转换没改变原列表元素?
你这段循环代码:
print(type(players[1])) for player in players: player = str(player) print(type(players[1]))
输出还是<class 'lxml.etree._ElementUnicodeResult'>,核心原因是循环里的player只是原列表元素的临时副本——你修改这个临时变量,并不会影响原列表里的元素本身。
要真正把列表里的每个元素都转成字符串,你需要直接修改列表的元素,推荐两种写法:
- 最简洁的列表推导式:
players = [str(player) for player in players] - 或者用索引循环修改:
for i in range(len(players)): players[i] = str(players[i])
修改后再执行print(type(players[1])),就能看到输出变成<class 'str'>了。
2. 为什么str对象没有substring方法?
Python的字符串类型确实没有substring()方法——这个是Java、JavaScript这类语言里的写法,Python里字符串截取用切片语法,用法更灵活:
- 取从索引
start到end-1的子串:s[start:end] - 从开头取到索引
n-1:s[:n] - 从索引
n取到结尾:s[n:]
比如你想实现类似substring(2,5)的效果,就这么写:
s = str(players[1]) result = s[2:5] # 对应截取第3到第5个字符(Python索引从0开始)
这样就能完成你想要的字符串截取操作啦!
内容的提问来源于stack exchange,提问作者notacorn
相关产品推荐
相关产品推荐

