2014-06-11 50 views
0

說我有一個字符串Python的轉換字符串使用正則表達式乳膠

string = "{1/100}" 

我想用正則表達式在Python把它轉換成

new_string = "\frac{1}{100}" 

我想我會需要用到的東西這樣

new_string = re.sub(r'{.+/.+}', r'', string) 

但是我卡上什麼,我會整理保存字符分數,在本例中爲1和100.

回答

2

您可以使用()來捕獲數字。然後使用\1\2指他們:

new_string = re.sub(r'{(.+)/(.+)}', r'\\frac{\1}{\2}', string) 
# \frac{1}{100} 

注:不要忘了轉義反斜線\\

2

使用parens捕獲數字,然後使用\1\2在替換文本中引用它們。例如:

>>> print re.sub(r'{(.+)/(.+)}', r'\\frac{\1}{\2}', "{1/100}") 
\frac{1}{100} 
1

大括號內的任何內容都是數字/的數字。所以在正則表達式的地方編號([0-9])而不是.(點)。

>>> import re 
>>> string = "{1/100}" 
>>> new = re.sub(r'{([0-9]+)/([0-9]+)}', r'\\frac{\1}{\2}', string) 
>>> print new 
\frac{1}{100} 
+1

沒有理由將參數限制爲數字。 '\ frac'不關心這兩個參數是什麼;它只是排版它們,在[vincumulm](http://en.wikipedia.org/wiki/Vinculum_(symbol))之上和之下。 – chepner

0

使用re.match。它更靈活:

>>> m = re.match(r'{(.+)/(.+)}', string) 
>>> m.groups() 
('1', '100') 
>>> new_string = "\\frac{%s}{%s}"%m.groups() 
>>> print new_string 
\frac{1}{100}