Создайте функцию, которая возвращает слова в строке (REMOVE CHARACTER IN STRING) - PullRequest
0 голосов
/ 23 января 2020

пример 1: "fogfogfffoooofftreesggfoogfog" - В этом примере мне нужно удалить 'fogFOG' , и я должен получить вывод в виде 'trees' .

пример 2: "fogFogFogffffooobirdsandthebeesGGGfogFog" - Выход должен быть похож на 'birdsandthebees'

str="fogFogFogffffooobirdsandthebeesGGGfogFog"

str1="fogFOG"

for i in str1:

    Str=str.replace(i,'')
print(Str)

I ' я получаю ошибку в Str=str.replace(i)

TypeError: replace () принимает как минимум 2 аргумента (1 дано) Я получаю вывод Если я использую все буквы отдельно в списке. Но я бы хотел знать, как мы можем сделать это с помощью одной строки.

1 Ответ

0 голосов
/ 23 января 2020

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

В вашем примере есть ошибка. На каждой итерации for для l oop вы заново объявляете переменную "Str" (подробнее об именах переменных ниже) как строку str минус один символ str1. Поэтому каждый раз, когда вы удаляете один из символов из str1, это не сохраняется на следующей итерации. Мой вывод:

~/Programming$ python yourcode.py
fogFogFogffffooobirdsandthebeesfogFog

Этого и следовало ожидать, так как на последней итерации для l oop Str объявляется как str1 с удаленным 'G'.

Возможно, вы (?) предназначен для ссылки на вашу переменную "str" ​​и просто неправильно капитализирован. В этом случае ваш предполагаемый код будет:

str="fogFogFogffffooobirdsandthebeesGGGfogFog"

str1=['f','o','g','F','O','G']

for i in str1:
    str=str.replace(i,'')
print(str)

В приведенном выше примере вы получите требуемый результат. Обратите внимание, что на этот раз переменная str постоянно объявляется как минус один символ str1. поэтому на следующей итерации символ по-прежнему будет отсутствовать в строке справа.

При именовании переменных

В общем, рекомендуется использовать описательные имена переменных в вашем коде. Вызов String «str» не очень нагляден, так как guish не отличается от других строк. "str" ​​также является типом в Python, переопределение его в вашем коде приведет к поломке. Кроме того, переменная, которую вы назвали «str1», на самом деле не строка, а список. Это может сбить с толку тех, кто читает это. Вы можете рассмотреть что-то вроде:

result_string ="fogFogFogffffooobirdsandthebeesGGGfogFog"

forbidden_characters=['f','o','g','F','O','G']

for i in forbidden_characters:
    result_string =result_string.replace(i,'')
print(Str)

Это делает ваш код более читабельным, как для себя, так и (что более важно) для других людей, которые могут работать над вашим кодом (например, я :)). Это особенно важно, если вы работаете в команде.

В python существует соглашение, согласно которому имена переменных должны быть в нижнем регистре с подчеркиванием между словами.

...