简体   繁体   中英

Replacing a character in a string with a set of two possible characters

a = ["0$%","0%%%","0$%$%","0$$"]

The above is a corrupted communication code where the first element of each sequence has been disguised as 0. I want to recover the original and correct code by computing a list of all possible sequences by replacing 0 with either $ or % and then checking which of the sequences is valid. Think of each sequence as corresponding to an alphabet if correct. For instance, "$$$" could correspond to the alphabet "B".

This is what I've done so far

    raw_decoded = []
    word = []
    for i in a:
        for j in i:
            if j == "0":
                x = list(itertools.product(["$", "%"], *i[1:]))
                y = ("".join(i) for i in x)
    for i in y:
        raw_decoded.append(i)
    for i in raw_decoded:
        letter = code_dict[i] #access dictionary for converting to alphabet
        word.append(letter)
   return word

Not sure what you mean, perhaps you could add a desired output. What I got from your question could be solved in the following way:

b = []
for el in a:
   if el[0] == '0':
       b.append(el.replace('0', '%', 1))
       b.append(el.replace('0', '$', 1))
   else:
       b.append(el)

Try that:

output  = []

for elem in a:
    replaced_dollar = elem.replace('0', '$', 1)
    replaced_percent = elem.replace('0', '%', 1)

    # check replaced_dollar and replaced_percent

    # and then write to output

    output.append(replaced_...)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM