You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeautifulSoup处理XML循环时迭代计数仅追加最终值问题

搞定你的循环赋值问题

嘿,我一眼就看出问题所在了——你在循环里一直复用同一个message对象!

Python里列表存的是对象的引用,不是复制出来的新对象。所以你每次把message塞进messages列表时,其实都是把同一个对象的"地址"存进去。循环跑完后,所有列表元素都指向最后那次修改的message,难怪所有messageid都是最后的65了。

怎么改?每次循环造个新的message就行

你得把创建message的代码挪到循环里面,确保每一轮迭代都生成一个全新的实例。比如这样:

count = 0
for i in oosASINS:
    # 这里根据你实际的message创建方式来初始化,示例用BeautifulSoup创建新节点
    message = BeautifulSoup("<message><sku></sku><quantity></quantity><messageid></messageid></message>", "xml")
    sku = str(i)
    message.sku.string = sku
    message.quantity.string = "0"
    message.messageid.string = str(count)
    messages.append(message)
    count += 1

为啥这样有用?

现在每次循环都会生成一个独立的message对象,每个对象的属性都是单独设置的,添加到messages里的也是不同的实例。这样你的messageid就会从0开始依次递增,完全符合预期啦。

如果你的message原本是从某个模板或者已有节点复制来的,记得在循环里做深拷贝或者重新生成,别直接用同一个对象就行。

内容的提问来源于stack exchange,提问作者lolcats4u

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:30:57