1

例如,我有一个字符串或此类字符串的列表:

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']

我需要替换 #-tags-2-7-# on result fromkeys[randint(2, 7)]和 #-tags-3-9-# on keys[randint(2, 7)]etc. 我需要每次从 #-tags- - -# 获取两个整数并将其发送到keys[randint(*, *)]而是发送结果#-tags- - -#

4

1 回答 1

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).

于 2013-08-23T18:55:15.743 回答