Python使用正则表达式将字符串转换为乳胶

时间:2014-06-11 17:19:15

标签: python regex parsing latex substitution

说我有一个字符串

string = "{1/100}"

我想在Python中使用正则表达式将其转换为

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

我想我需要使用这样的东西

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

但是为了保留分数中的字符,我仍然坚持我会放置的内容,在本例1和100中。

4 个答案:

答案 0 :(得分:2)

您可以使用()来捕获数字。然后使用\1\2来引用它们:

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

注意:不要忘记转义反斜杠\\

答案 1 :(得分:2)

使用parens捕获数字,然后使用\1\2在替换文本中引用它们。例如:

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

答案 2 :(得分: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}

答案 3 :(得分: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}