0

我正在尝试在字符串中搜索数字,并在找到它们时在它们周围加上一些字符,例如

a = "hello, i am 8 years old and have 12 toys"
a = method(a)
print a
"hello, i am \ref{8} years old and have \ref{12} toys"

我查看了 re (正则表达式)库,但似乎找不到任何有用的东西......任何很酷的想法?

4

2 回答 2

7

这是该方法的基本用法.sub

numbers = re.compile(r'(\d+)')

a = numbers.sub(r'\ref{\1}', a)

数字模式周围的括号\d+创建一个组,\1引用替换为组的内容。

>>> import re
>>> a = "hello, i am 8 years old and have 12 toys"
>>> numbers = re.compile(r'(\d+)')
>>> a = numbers.sub(r'\\ref{\1}', a)
>>> print a
hello, i am \ref{8} years old and have \ref{12} toys
于 2012-09-07T10:17:34.467 回答
0

你需要使用 re.sub 函数沿着这些线:

re.sub("(\d+)",my_sub_func,text)# 在此处捕获数字(尽管这仅捕获非实数) my_sub_func 的定义如下:

def my_sub_func(match_obj):

    text = match_obj.group(0) # get the digit text here
    new_text = "\\ref{"+text+"}" # change the pattern here
    return new_text`
于 2012-09-07T10:25:03.690 回答