2013-02-08 50 views
0

我通常使用lxml來解析xml,但在這種情況下,我只需要更改單個標籤的內容。用正則表達式替換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) 
+0

的,什麼是錯用'lmxl'更換內容 - 什麼是 「(這類型的作品)」 – 2013-02-08 23:17:31

回答

1

既然你知道確切的標籤,這是非常簡單的,只要抓住任何字符,直到下一個標籤(任意字符沒有<) :

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

[\ d - ] +不會匹配YYYY -MM-DD但僅YYYY-MM-

嘗試[\ d - ] + \ d或\ d + - \ d + - \ d +

+0

'\ d + - \ d + - \ d +'?或者僅僅是\ d {4} - \ d {2} - \ d {2}'可能是更好的 – 2013-02-08 23:18:28

+0

,輸入太快。將修復 – 2013-02-08 23:19:15

1

嘗試

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

你可以使用一個更具體的正則表達式,如:

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