我用Python解析xml数据,xml文件包含url,正如您所知url不能通过regex直接解析,因为它们的格式不适合,有一些字符会阻止解析,比如“?”, '$', '@'. 所以我用urllib.quote函数,它工作得很好,除了一个url,我无法解释这一点。在
在urllib.quoteurl如下所示:
https://randomurl.fr/?oslc_cm.properties=FORM_item
函数完成后,它变成这样:
^{pr2}$所以“:”被更正了,但是“?”并且“=”保持原样,这会阻止解析。我觉得奇怪的是,它是唯一一个不起作用的网址,而其他30个网址也包含“?”它只是把它变成了“%3F”、“=”变成了“%3D”。我试图改变它在xml文件中的位置,但仍然是这个精确的url没有很好地引用。不过,我注意到,如果我用FORM\productCmt(另一个url的属性)更改FORM_item,那么它就可以引用它了。在我看来这很随机,我不知道发生了什么。在
有人看到故障了吗?在
编辑
我无法转义字符,因为我正在获取xml文件并对其进行解析。下面是我用来引用URL的代码:
def genElementList(self, xmldata):
xmldata_encoded = xmldata
p = re.compile(r'"(http.*?)"')
urls = p.findall(xmldata)
for url in urls:
xmldata_encoded = str.replace(xmldata_encoded, url, urllib.quote(url))
print xmldata_encoded + '\n'
对于每个url,我可以看到除了一个之外,这个函数起作用,总是一样的。我将它与其他正确引用的url进行了比较,它们完全相似,除了“properties=FORM_item”部分,其中另一部分是“properties=FORM_productCmt”。这就是为什么我不明白为什么它不能工作。在
谢谢,用户2357112 您帮我了解了问题所在,我通过将substring函数的count参数设置为1来解决子字符串问题:
相关问题 更多 >
编程相关推荐