2012-05-09 42 views
1

我需要修正一些文字,位於分隔符之間以下情況:
案例1:{12345}(花括號之間的數字)應該成爲item_12345(增加了「ITEM_」,去掉括號)。
案例2:[999](方括號之間的數字)應該成爲total_999正則表達式替換分隔符之間的文本在python

所以這個字符串:{242424} from X [100] bulks, linked to {57575757} from Y for [500] units 應該出現這樣的:item_242424 from X total_100 bulks, linked to item_57575757 from Y for total_500 units

怎麼可以這樣用正則表達式做了什麼?

+4

你想出這麼遠? – tuxuday

+0

嗨,幾乎沒有。我不知道如何將文本從標籤中分離出來,以及如何使用多個替換來定義多個模式。這對我來說是一個完整的黑洞,我無法找到任何答案 – user1102018

+0

如果你花了幾個小時,假設你是編程/正則表達式的新手,應該在這裏分享一些東西。 – tuxuday

回答

4

這應該讓你開始:

s = '{123} and [456]' 

s = re.sub(r'\{(.+?)\}', r'foo_\1', s) 
s = re.sub(r'\[(.+?)\]', r'bar_\1', s) 

print s 
+0

謝謝!是否有可能在同一表達式中包含另一組(方括號)?或者我應該使用第二個re.sub? – user1102018

+0

由於您的替換是不同的,另一個re.sub會更容易。 – georg

0
>>> import re 
>>> curly = re.compile('\{([0-9]+)\}') 
>>> square = re.compile('\[([0-9]+)\]') 
>>> s = "{242424} from X [100] bulks, linked to {57575757} from Y for [500]" 
>>> re.sub(square, lambda x: 'total_'+x.group(1), re.sub(curly, lambda x: 'item_ 
'+x.group(1),s)) 
'item_242424 from X total_100 bulks, linked to item_57575757 from Y for total_50 
0' 
+0

謝謝,這當然可以解決我的問題,只有一個「.sub」,但它有點複雜。 – user1102018

相關問題