为句子中随机数字的数字生成占位符

时间:2012-08-27 09:24:20

标签: python regex placeholder substitution

问题

我需要在句子(字符串)中创建占位符。

实施例

My son is 6 years old and my dad is 61 years old.
My son is #0 years old and my dad is #1 years old.

这只是一句话。句子逐行分开,并在句子中包含数字的各种位置和(数字位置混合和不同的长度)。

我尝试过各种代码,但大多数代码都使用模式替换。 我知道程序,如果我在python编程方面经验丰富,我就能做到。

程序

阅读句子(文本文件中的行)。计算句子中的数字(d +)数,然后如果句子由6个数字组成,则从句子中的最后一个数字开始替换为第一个数字(#6,#5,#4,...)。

例如

My dog is 3 years old, 92.4 cm heigh and has 16 teeth.

计算各种长度的数字(1a,1b1,1c11,1111,1.1是8个数字):4。

1。循环(替换第4个数字):

My dog is 3 years old, 92.4 cm heigh and has #4 teeth.

2。环

My dog is 3 years old, 92.#3 cm heigh and has #4 teeth.

第3。环

My dog is 3 years old, #2.#3 cm heigh and has #4 teeth.

4。环

My dog is #1 years old, #2.#3 cm heigh and has #4 teeth.

将行添加到文件末尾并从文件中取另一行。 重复这些步骤,直到文件结束。

1 个答案:

答案 0 :(得分:0)

既然你提到过python,你可以这样做:

import re

myStr = "My son is 6 years old and my dad is 61 years old."
expr = r'[^#][0-9]+'
idx = 1

while True:
    try:
        match = re.search(expr,myStr)
        print match.start()
        print match.end()
        print myStr[match.start():match.end()]
        myStr = myStr[:match.start()+1] + '#' + str(idx) + myStr[match.end():]
        idx += 1
    except AttributeError:
        break

print myStr