2015-10-14 3 views
-2

Мне нужно объединить строки, чтобы создать одну строку. Например, строки для «привет», которые необходимо объединить, следующие: [H ----], [-E ---], [--LL-] и [---- O]Как слить две строки в python?

Это текущий код, который я должен сделать, чтобы буквы отображались в первую очередь.

display_string = "[" + "".join([x if x == letter else "-" for x in word]) + "]" 

Как бы идти о том, чтобы такие строки, как [H ----], [ОН ---], [Хелль-], и, наконец, [ПРИВЕТ]?

+1

Можете ли вы объяснить, что 'letter' это? – bourbaki4481472

ответ

0

Я не знаю, помогает ли это так, как вы хотели, но это работает. Проблема в том, что на самом деле у нас нет замены строк. Список символов может работать лучше для вас до окончательной сборки.

string_list = [ 
    'H----', 
    '-E---', 
    '--LL-', 
    '----O' 
] 

word_len = len(string_list[0]) 
display_string = word_len*'-' 
for word in string_list: 
    for i in range(word_len): 
     if word[i].isalpha(): 
      display_string = display_string[:i] + word[i] + display_string[i+1:] 
    print '[' + display_string + ']' 
0

Хорошо, поэтому я думаю, что вижу, где вы собираетесь с этим.

Мы определяем слово «привет», затем мы перебираем все уникальные буквы в «привет», и мы получаем ваши display_string. Тогда ваш вопрос о том, как объединить их вместе?

word = "HELLO" 
all_display_strings = ["[" + "".join([x if x == letter else "-" for x in word]) + "]" for letter in word] 
# now merge the list of lists 
length = len(all_display_strings[0])-2 # -2 for the opening and closing bracket 
merged_display_strings = ['-']*length 

for i in range(0, length): 
     for j in range(0, len(all_display_strings)): 
      if (all_display_strings[j][i+1] != '-'): 
       merged_display_strings[i] = all_display_strings[j][i+1] 


print(''.join(merged_display_strings)) 
0

Если предположить, что ваши строки в списке all_strings

all_strings = ["[H----]", "[-E---]", "[--LL-]", "[----O]"] 
# clean them 
all_strings = map(lambda x:x.strip()[1:-1], all_strings) 

# Let's create a list for the characters in the final string(for easy mutating) 
final_string = ['' for _ in xrange(max(map(len, all_strings)))] 

for single in all_strings: 
    for i, char in enumerate(single): 
     if char != '-': final_string[i]=char 

print "[" + ''.join(final_string) + "]" 
0
strings = 'h----', '-e---', '--ll-', '----o' 
letterSoups = [ [ (p, c) for (p, c) in enumerate(s) if c != '-' ] 
    for s in strings ] 
result = list('-----') 
for soup in letterSoups: 
    for p, c in soup: 
    result[p] = c 
print ''.join(result) 
0
s = "[H----], [-E---], [--LL-], [----O]" 

print(''.join(re.findall(r'\w', s))) 

HELLO