gpt4 book ai didi

python - 可选地替换子字符串 python

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:06 25 4
gpt4 key购买 nike

我的替换列表采用以下格式。

lstrep = [('A',('aa','aA','Aa','AA')),('I',('ii','iI','Ii','II')),.....]

我想要实现的是通过所有可能的替换来选择性地更改字母的出现。输入的词也应该是列表的成员。例如

输入 - DArA

预期输出 -

['DArA','DaarA','Daaraa','DAraa','DaArA','DAraA','DaAraA','DAarA','DAarAa', 'DArAa','DAArA','DAArAA','DArAA']

我的尝试是

lstrep = [('A',('aa','aA','Aa','AA'))]
def alte(word,lstrep):
output = [word]
for (a,b) in lstrep:
for bb in b:
output.append(word.replace(a,bb))
return output
print alte('DArA',lstrep)

我收到的输出是 ['DArA', 'Daaraa', 'DaAraA', 'DAarAa', 'DAArAA'] 即所有出现的 'A' 都被 'aa' 替换,分别为 'aA'、'Aa' 和 'AA'。我想要的是它应该给出可选替换的所有排列。

最佳答案

itertools.product 将给出所有排列。您可以建立一个替换列表,然后让它处理排列。

import itertools

lstrep = [('A',('aa','aA','Aa','AA')),('I',('ii','iI','Ii','II'))]
input_str = 'DArA'

# make substitution list a dict for easy lookup
lstrep_map = dict(lstrep)

# a substitution is an index plus a string to substitute. build
# list of subs [[(index1, sub1), (index1, sub2)], ...] for all
# characters in lstrep_map.
subs = []
for i, c in enumerate(input_str):
if c in lstrep_map:
subs.append([(i, sub) for sub in lstrep_map[c]])

# build output by applying each sub recorded
out = [input_str]
for sub in itertools.product(*subs):
# make input a list for easy substitution
input_list = list(input_str)
for i, cc in sub:
input_list[i] = cc
out.append(''.join(input_list))

print(out)

关于python - 可选地替换子字符串 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com