用正则表达式替换xml标签

0 投票
4 回答
665 浏览
提问于 2025-04-17 15:18

我通常使用lxml来解析xml文件,但在这个情况下,我只需要修改一个标签的内容。

<sales_start_date>YYYY-MM-DD</sales_start_date>

YYYY-MM-DD是一个可变的日期。

我想把上面的内容替换成:

<sales_start_date>2013-01-01</sales_start_date>

这是我现在的代码(虽然有点问题,但能用)

re.sub('<sales_start_date>[\d-]+</sales_start_date>', 
       '<sales_start_date>2013-01-01</sales_start_date>', 
        data)

4 个回答

0

你可以使用一个更具体的正则表达式,比如:

r'<sales_start_date>\d{4}-\d{2}-\d{2}</sales_start_date>'
1

尝试一下

re.sub('<sales_start_date>.+</sales_start_date>', 
       '<sales_start_date>2013-01-01</sales_start_date>', 
        data)
1

既然你已经知道了具体的标签,那么这件事就简单多了。你只需要抓取下一个标签之间的所有字符,也就是抓取所有不是<的字符。

re.sub('<sales_start_date>[^<]+</sales_start_date>', 
       '<sales_start_date>2013-01-01</sales_start_date>', 
        data)

撰写回答