Если вы хотите заменить каждый знак пунктуации пробелом:
s = """
Baking cake of straw-bana-choco will take longer than expcted
Please include as much of the following data that is available.< >< >- Cake Type:< >- Flavors:< >- Decoration Type:< >- Icing:< >-
"""
remove_punc = str.maketrans(dict.fromkeys(string.punctuation, ' '))
print(str.translate(s, remove_punc))
Out:
Baking cake of straw bana choco will take longer than expcted
Please include as much of the following data that is available Cake Type Flavors Decoration Type Icing
И здесь очень хороший обзор других методов: Быстрая пунктуация удаление с пандами
.
оператор в основном говорит, "отправляют это сообщение в объект". В Вашем примере это звонит тому конкретному участнику. ::
оператор "выполняет развертку" к объему, определенному налево от оператора, и затем называет участника определенным на правой стороне оператора.
, Когда Вы используете ::
, необходимо ссылаться на участников, которые определяются. При использовании .
Вы просто отправляете сообщение в объект. Поскольку то сообщение могло быть чем-либо, автозавершение не работает на .
, в то время как это делает для ::
.
На самом деле автозавершение действительно работает на .
. Опции завершения найдены путем вызова #methods
на объекте. Вы видите это для себя путем переопределения Object.methods
:
>> def Object.methods; ["foo", "bar"]; end
=> nil
>> Object.[TAB]
Object.foo Object.bar
>> Object.
Примечание, что это только работает, когда выражение налево от эти .
является литералом. Иначе получение объекта звонить #methods
на включило бы оценку левой стороны, которая могла иметь побочные эффекты. Вы видите это для себя также:
[continuing from above...]
>> def Object.baz; Object; end
=> nil
>> Object.baz.[TAB]
Display all 1022 possibilities? (y or n)
Мы добавляем метод #baz
к Object
, который возвращается Object
сам. Тогда мы автоматически заполняем для получения методов, к которым мы можем обратиться Object.baz
. Если бы IRB звонила Object.baz.methods
, это получило бы то же самое как [1 112]. Вместо этого IRB имеет 1 022 предложения. Я не уверен, куда они происходят из, но это - ясно универсальный список, который на самом деле не основан на контексте.
::
оператор (также) используется для получения констант модуля, в то время как .
не. Вот почему HTTP
соберется в завершении для [1 116], но не для [1 117]. Net.HTTP
не корректно, но Net::HTTP
.