2014-06-11 49 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}