2016-01-05 2 views
0
def censor(text, word): 
    final_text = '' 
    new_text = '' 
    items = text.split() 
    for i in items: 
     if i == word: 
      new_text = "*" * len(word) 
      final_text.join(new_text) 
     else: 
      new_text = items 
      final_text.join(new_text) 
    return final_text 

print censor("this hack is wack hack", "hack") 

вышеуказанная функция предназначена для цензуры слова «взломать» звездочками, присутствующими в тексте. Могу ли я узнать, где ошибка в приведенном выше коде. Заранее спасибо.Функция цензуры питона по кодовой библиотеке

+0

Прочитайте документацию на ' .join' метод. Это не работает так, как вы думаете. –

+0

Было бы удобно также указать, какой недостаток вы видите. Это неправильный результат или ошибка, которая прерывает вычисления? – Reti43

+0

«Этот хак wack hack'.replace ('hack', '****') == 'this **** is wack ****' – Darcinon

ответ

1

Это должно быть все.

def censor(text, word): 
    final_text = '' 
    new_text = '' 
    items = text.split() 
    for index, w in enumerate(items): #'index' is an index of an array 
     if w == word: 
      new_text = "*" * len(word) 
      items[index] = new_text # substituting the '*' 
    final_text = ' '.join(items) # the correct way how join works 
    return final_text 

print censor("this hack is wack hack", "hack") 

Другой способ:

text = 'this hack is wack hack' 
word = 'hack' 
print text.replace(word, '*' * len(word)) 

Путь присоединиться() работает в питон выполнении его на вступление знак (например, '', '-', '' и т.д.) и вы предоставите список внутри присоединиться (list_in_here)

Простой пример:

>>>'-'.join(['1','human','is','a','one']) 
'1-human-is-a-one' 
+3

Было бы неплохо объясните свое решение. В частности, укажите, как использование OP 'join()' было неправильным, и то, что он собирался сделать, это заменить элементы в списке, которые соответствуют слову со звездочками. Для упрощения кода инициализация 'final_text' и' new_text' является избыточным, и вы также можете упростить блок if на 'items [index] =" * "* len (word)'. – Reti43

+0

Это правда, однако, как я понял, пользователь, который задал вопрос, является новым для python, поэтому лучше сделать шаг за шагом на данный момент, поэтому его легче понять, как работает python. imo – admix

+0

Но вы только сбрасываете решение, и вы ожидаете, что новичок на python увидит ваши рассуждения позади него? Хороший ответ не только полезен для предоставления решения, которое работает, но и объясняет, почему вещь, которую пытались сделать ПП, была неправильной или почему решение является лучшим способом обойти это. – Reti43

Смежные вопросы