说我有一个字符串
string = "{1/100}"
我想在Python中使用正则表达式将其转换为
new_string = "\frac{1}{100}"
我想我需要使用这样的东西
new_string = re.sub(r'{.+/.+}', r'', string)
但是为了保留分数中的字符,我仍然坚持我会放置的内容,在本例1和100中。
答案 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}