python替换第n个字符串_Python:如何在文本中替换N个随机字符串出现?

有很多方法可以做到这一点。我的方法是编写一个函数,它接受原始字符串,标记字符串和一个函数,该函数返回原始标记出现的替换文本:

def strByReplacingTokensUsingFunction(original, token, function):

outputComponents = []

matchNumber = 0

unexaminedOffset = 0

while True:

matchOffset = original.find(token, unexaminedOffset)

if matchOffset < 0:

matchOffset = len(original)

outputComponents.append(original[unexaminedOffset:matchOffset])

if matchOffset == len(original):

break

unexaminedOffset = matchOffset + len(token)

replacement = function(original=original, offset=matchOffset, matchNumber=matchNumber, token=token)

outputComponents.append(replacement)

matchNumber += 1

return ''.join(outputComponents)(你当然可以改变它以使用更短的标识符。我的风格比典型的Python风格更冗长。)

鉴于该功能,很容易替换十个中的两个随机事件。这是一些示例输入:

sampleInput = 'a(TOKEN)b(TOKEN)c(TOKEN)d(TOKEN)e(TOKEN)f(TOKEN)g(TOKEN)h(TOKEN)i(TOKEN)j(TOKEN)k'随机模块有一个方便的方法从群体中挑选随机项目(不选择相同的项目两次):

import random

replacementIndexes = random.sample(range(10), 2)然后我们可以使用上面的函数来替换随机选择的事件:

sampleOutput = strByReplacingTokensUsingFunction(sampleInput, '(TOKEN)',

(lambda matchNumber, token, **keywords:

'REPLACEMENT' if (matchNumber in replacementIndexes) else token))

print sampleOutput这是一些测试输出:

a(TOKEN)b(TOKEN)cREPLACEMENTd(TOKEN)e(TOKEN)fREPLACEMENTg(TOKEN)h(TOKEN)i(TOKEN)j(TOKEN)k这是另一个运行:

a(TOKEN)bREPLACEMENTc(TOKEN)d(TOKEN)e(TOKEN)f(TOKEN)gREPLACEMENTh(TOKEN)i(TOKEN)j(TOKEN)k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值