我正在尝试在字符串中搜索数字,并在找到它们时在它们周围加上一些字符,例如
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 (正则表达式)库,但似乎找不到任何有用的东西......任何很酷的想法?
这是该方法的基本用法.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
你需要使用 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`