我有一些坏掉的XML(示例不是坏掉的,但文档是坏掉的),它的一部分如下所示:
<sp who="#FERN">
<speaker>FERNANDO</speaker>
<p>Un instante. Soy un hombre. Huir sería cobarde... ¡Sin defenderse! ¡Sin salvarte!... Va a venir... con la vara del guardia. ¡Ay, que ya la conoces! ¡Ah, maldito!... ¡Y me dices que ese hombre es bueno!...</p>
</sp>
我要将属性who的值转换为小写:
<sp who="#fern">
通常我使用正则表达式中的函数\U和\L,但我认为python不支持这一点。我试过这个regexp:
text = re.sub(r'(who="#.*?")', r'\L\1', text)
但结果是:
<sp \Lwho="#FERN">
这不是我想要的。。。有什么需要帮忙的吗,亲爱的stackoverflowers?提前谢谢!你知道吗
您可以在
re.sub
中使用匿名函数说明:
如果要对捕获的字符应用某些操作,则必须在
re.sub
的替换部分使用lambda函数。你知道吗\b(who="#)
匹配精确字符串who="#
注意,regex中的\b
称为单词边界,它匹配单词和非单词字符,反之亦然。括号(pattern)
用于捕获与括号内的模式匹配的字符。所以第一组包含who="#
([^"]*)
匹配任何字符,但不匹配"
中的任何字符,零次或多次。所以这应该捕获FERN
。在替换部分,我只返回第一组+第二组。
相关问题 更多 >
编程相关推荐