d'abord, de nombreuses fonctions de chaîne - y compris la bande et remplacer - sont deprecated. La réponse suivante utilise des méthodes de chaîne à la place. (Au lieu de string.strip(" Hello ")
, j'utilise l'équivalent de " Hello ".strip()
.)
Voici un code qui simplifiera le travail pour vous. Le code suivant suppose que, quelles que soient les méthodes que vous appelez sur votre chaîne, cette méthode renvoie une autre chaîne.
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
La classe existe O
afin que vos noms de méthode très abrégée ne pollue pas votre espace de noms. Lorsque vous souhaitez ajouter plusieurs méthodes de chaîne, ajoutez-les au O
dans le même format que ceux donnés.
La fonction process_line
est l'endroit où toutes les choses intéressantes se produisent. Tout d'abord, voici une description du format de l'argument:
- Le premier argument est la chaîne à traiter.
- Les arguments restants doivent être donnés par paires.
- Le premier argument de la paire est une méthode de chaîne. Utilisez les noms de méthodes raccourcies ici.
- Le deuxième argument de la paire est une liste représentant les arguments de cette méthode de chaîne particulière.
La fonction process_line
renvoie la chaîne qui émerge après avoir effectué toutes ces opérations.
Voici un exemple de code montrant comment utiliser le code ci-dessus dans vos propres scripts. J'ai séparé les arguments de process_line
sur plusieurs lignes pour montrer le regroupement des arguments. Bien sûr, si vous ne faites que pirater et utiliser ce code dans des scripts quotidiens, vous pouvez compresser tous les arguments sur une seule ligne; cela le rend un peu plus facile à lire.
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
Bien sûr, si vous vouliez très précisément utiliser des chiffres, vous pouvez nommer vos fonctions O.f1
, O.f2
, O.f3
... mais je suppose que ce n'était pas l'esprit de votre question.