例如,我有一个字符串或这样的字符串列表:
text = '000 #-tags-2-7-# 001 002 003 004 05 06 07 08 SDFGSDFG #-tags-3-9-#'
keys = ['key-1', 'key-2', 'key-3', 'key-4', 'key-5', 'key-6', 'key-7', 'key-8', 'key-9', 'key-10']
我需要替换keys[randint(2, 7)]
上的#-tags-2-7-#和keys[randint(2, 7)]
上的#tags-3-9-#等。我需要每次都得到两个来自#-tags- - 的整数 - #并将其发送到keys[randint(*, *)]
并发送结果#-tags- - - #
答案 0 :(得分:1)
您可以使用re.sub将模式r'#-tags-(\d)-(\d)-#'
替换为所需的字符串:
import re
import random
text = '000 #-tags-2-7-# 001 002 003 004 05 06 07 08 SDFGSDFG #-tags-3-9-#'
keys = ['key-1', 'key-2', 'key-3', 'key-4', 'key-5', 'key-6', 'key-7', 'key-8', 'key-9', 'key-10']
def tag_replace(match):
start, end = map(int, match.groups())
return ', '.join(random.sample(keys, random.randint(start, end)))
print(re.sub(r'#-tags-(\d)-(\d)-#', tag_replace, text))
打印(随机结果,如)
000 key-8, key-7, key-3 001 002 003 004 05 06 07 08 SDFGSDFG key-9, key-1, key-7, key-3, key-4, key-10, key-6
注意:我认为您希望将#-tags-3-9-#
替换为逗号分隔的n
项keys
项,其中n = random.randint(3, 9)
,{{1}}。