So, "H_LLO" ==> ["HALLO", "HBLLO", ... "HZLLO"] (length is 26)
However, Scrabble has 2 blank tiles, so I can't just do a simple for loop and replace.
For example, "H_LL_" ==> ["HALLA", "HALLB", ... "HBLLA", ... "HZLLZ"] (length is 26x26 = 676)
What is the cleanest way to do this? The best I could come up with is the following, but I don't much like it:
import re
from itertools import product
w = "H_LL_"
expanded = []
product_args = list()
for _ in xrange(w.count("_")):
product_args.append( map(chr, range(65, 91)) )
for repl_str in product(*tuple(product_args)):
wtemp = w
for c in repl_str:
wtemp = re.sub('_', c, wtemp)
expanded.append(wtemp)