gpt4 book ai didi

Python str.find() 覆盖 Element.find(),如何规避?

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:59 25 4
gpt4 key购买 nike

我正在编写一些使用 Element.find() 的代码来自 Python 的 xml.etree.ElementTree 的方法模块。但是,我发现一旦我开始使用 str.replace() ,此后 Python 解释我对 object.find() 的调用作为str.find()而不是 Element.find() .

我需要我的代码从各种 Element 中获取文本来自 XML 文件的对象,在某些情况下我需要用 str 修改它方法。在不改变解释器解释 object.find() 的方式的情况下,我该如何做到这一点? ?这是我的代码:

import xml.etree.ElementTree as xml
import re
import json

pattern = re.compile('[a-z,0-9,-]+')
c_pattern = re.compile('\[caption[^\]]+\]')
c2_pattern = re.compile('\[/caption\]')

tree = xml.parse('file.xml')
root = tree.getroot()

for item in root.iter('item'):
if item.find('{http://wordpress.org/export/1.2/}post_type').text == 'post':
t = item.find('{http://purl.org/rss/1.0/modules/content/}encoded').text
print item.find
try:
t = t.encode('utf-8')

o_cap = re.findall(c_pattern,t)
e_cap = re.findall(c2_pattern,t)

for item in o_cap:
t = t.replace(item,'')
for item in e_cap:
t = t.replace(item,'')
except:
t = 'None'
print item.find
title = item.find('title').text

第一个print语句返回 <bound method Element.find of <Element 'item' at 0x2a7a7d0>> , 而第二个返回 <built-in method find of str object at 0x2b56e00> .

我试过子类化 Element , 但我不知道如何制作 Element我的 XML 文件中的节点成为新子类的对象。我也试过简单地定义一个引用 Element.find() 的新方法。方法,但是当我尝试使用它时,解释器只是告诉我 Element对象没有以我的用户定义的名称命名的方法。

我想到的另一种方式是某种

from xml.etree.ElementTree import Element.find() as Element.some_other_name() 

但这行不通(我尝试了很多句法变体,但它们也不起作用)。有谁知道我可以/应该做什么来解决这个问题?

最佳答案

您正在破坏名称 item。尝试将内部循环中的变量名称切换为其他名称,例如 poop

for poop in o_cap:  
t = t.replace(poop,'')
for poop in e_cap:
t = alvin.replace(poop,'')

关于Python str.find() 覆盖 Element.find(),如何规避?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com