Прежде всего, многие строковые функции - в том числе полосы и заменить - это deprecated. В следующем ответе вместо этого используются строковые методы. (Вместо 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
... но я предполагаю, что это не дух вашего вопроса.