Прежде всего, многие строковые функции, включая удаление и замену, устарели . В следующем ответе используются строковые методы. (Вместо string.strip(" Hello ")
я использую эквивалент " Hello ".strip()
.)
Вот код, который упростит вам работу. В следующем коде предполагается, что какие бы методы вы ни вызывали в своей строке, этот метод будет возвращать другую строку.
class O(object):
c = str.capitalize
r = str.replace
s = str.strip
def process_line(line, *ops):
i = iter(ops)
while True:
try:
op = i.next()
args = i.next()
except StopIteration:
break
line = op(line, *args)
return line
Класс O
существует для того, чтобы ваши сильно сокращенные имена методов не загрязняли ваше пространство имен. Когда вы хотите добавить больше строковых методов, вы добавляете их в O
в том же формате, что и приведенный.
Функция process_line
- это то, где происходят все интересные вещи. Во-первых, вот описание формата аргумента:
- Первый аргумент - строка для обработки.
- Остальные аргументы должны быть заданы парами.
- Первый аргумент пары - это строковый метод. Используйте сокращенные имена методов здесь.
- Второй аргумент пары - это список, представляющий аргументы этого конкретного строкового метода.
Функция process_line
возвращает строку, которая появляется после выполнения всех этих операций.
Вот пример кода, показывающий, как вы могли бы использовать вышеуказанный код в своих собственных скриптах. Я разделил аргументы process_line
на несколько строк, чтобы показать группировку аргументов. Конечно, если вы просто взламываете и используете этот код в повседневных сценариях, вы можете сжать все аргументы в одну строку; это на самом деле облегчает чтение.
f = open("parrot_sketch.txt")
for line in f:
p = process_line(
line,
O.r, ["He's resting...", "This is an ex-parrot!"],
O.c, [],
O.s, []
)
print p
Конечно, если вы очень конкретно хотели использовать цифры, вы могли бы назвать свои функции O.f1
, O.f2
, O.f3
... но я предполагаю, что это не дух вашего вопроса.