2010-07-14 5 views
-3

Duplicate possible:
How do I modify program files in Python?insertion de texte avec python

je besoin d'insérer un texte à la beginnnig et la fin de chaque ligne d'un fichier texte. comment puis-je utiliser python pour faire cela?

+2

Ne posez pas la même question deux fois. C'est ennuyeux et nous le remarquons. http://stackoverflow.com/questions/3250393/python-writing-programs – Wilduck

+0

Bien que cette question soit beaucoup plus claire que l'autre (3250393). –

+0

C'est pourquoi j'ai réécrit la question .... – novak

Répondre

0

D'abord, ouvrez les fichiers d'entrée et de sortie ...

infile = open('inputfile', 'r') 
outfile = open('outputfile', 'w') 

... puis boucle à travers les lignes ...

for line in infile: 

... ajoutez votre contenu au début. ..

newline = "stuff for beginning of line" + line 

... puis écrire la ligne à la sortie ...

outfile.write(newline) 

... enfin, n'oubliez pas de fermer vos fichiers!

infile.close() 
outfile.close() 

Ou, voici une version plus courte qui est plus "Pythonic". (Notez qu'il suce dans le fichier entier à la fois, ne pas l'utiliser pour des fichiers très volumineux ou il sucent!):

with open('inputfile', 'r') as infile: 
    lines = infile.readlines() 
with open('outputfile', 'w') as outfile: 
    outfile.write("prefix-" + "prefix-".join(lines)) 
+1

-1 (1) 'line' et chaque élément de' lines' se terminera presque toujours par '' \ n' - pourquoi en ajouter un autre à chaque ligne? (2) 'avec ... dans:' - SyntaxError ('in' est un mot-clé) (3)' newline' est un nom génial ... essayez 'output_line' –

+0

Ah, bon point ... je pensais que 'readline()' supprime le '\ n' de la ligne, comme dans d'autres langues. Je suppose que dans ce cas, l'appeler "nouvelle ligne" est un peu approprié! – ewall

0

À moins que vous effectuez cette tâche particulière sur une base régulière, vous n'avez pas vraiment besoin d'un script python pour cela. La plupart des éditeurs créés en pensant à la programmation (Vim, Emacs, Notepad ++, etc.) prennent en charge une sorte de recherche et de remplacement basée sur l'expression rationnelle.

Remplacement ^\(.*\)$ avec "\1" devrait envelopper toutes les lignes doubles guillemets dans les éditeurs qui utilisent simples expressions régulières. Selon l'outil que vous utilisez, cela peut être fait de manière plus facile aussi; par exemple. dans une substitution ligne par ligne avec Sed ou Vim, le remplacement .* avec "&" fait le même travail.

Si vous n'êtes pas familier avec les expressions régulières, je vous recommande fortement de googler pour un bon tutoriel. Découvrez le three-part introduction to Sed par Daniel Robbins si vous utilisez Linux/Unix. Vous pouvez également vous référer à this page pour une introduction plus générale aux expressions régulières.

Questions connexes