我正在解析一个XML,我想用空字符串替换一个属性。
每个节点都有一个属性,如下所示:
Id="1hyx36uhpi780iq8oiu355"
我正在使用以下正则表达式模式,但它不起作用
D=re.earch('(id="([a-z0-9A-Z]+)")*',文本)
# 回答1
它在哪方面不起作用?
您是否正在使用诸如minidom之类的XML解析器来解析XML?如果没有,您应该考虑这样做。
如果直接解析字符串,您尝试过逐行解析吗?
这似乎奏效了:
- >>> import re
- >>> patt = re.compile(r'id="[a-z0-9A-Z]+"')
- >>> s = 'id="1hyx36uhpi780iq8oiu355" xxxxx xxxxx id="46fhrt5976jkfjhrh"'
- >>> s1 = patt.sub('id=""', s)
- >>> s1
- 'id="" xxxxx xxxxx id=""'
- >>>
# 回答2
阿什蒂普罗,
看起来您的语句中有一个有问题的无限重复运算符:
- d = re.search('(id="([a-z0-9A-Z]+)")*',text)
- HERE --------------------------^
-
我认为这会导致不受欢迎的零长度匹配。
另外,我不知道您的数据流是什么样子的,但是您可能还需要检查属性值中是否有单引号(')。
祝你好运!