我正在尝试在字符串中搜索数字,并在找到它们时,在它们周围包裹一些字符,例如。
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(正则表达式)库,但似乎找不到任何有用的东西......任何很酷的想法?
答案 0 :(得分:5)
这是.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
答案 1 :(得分: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`