2017-09-29 3 views
5

Mon but est de changer un mot dans une phrase et d'écrire dans un fichier texte.Remplacer un élément de texte dans une boucle for Python

J'ai créé un fichier texte:

filename = "/Users/Adam/Desktop/data.txt" 
text = open(filename, 'r') 
lines = text.readlines() 

J'ai cette phrase exemple: «J'ai un chat rouge »

Je veux changer le « RED », le nom de la couleur, et écris (ajoute) chaque phrase à mon fichier data.txt. Comment puis-je le prendre en boucle, ne remplacer que cette partie et écrire chaque séquence dans mon fichier txt?

ÉDITÉ - Demande Sanket:

Par exemple, je commence mon texte ici, ce qui est un paragraphe, donc je veux que ce tabulator ou dans l'espace avant dans le fichier txt trop ....... asfgas sagsaasgsagasgsagsaaggaggggg

et je continue mon senctence quand je suis arrivé à «J'ai un chat rouge »

Et après cela continue mon texte.

EDIT2:

#!/usr/bin/python 
#!/bin/sh 
# -*- coding: utf-8 -*- 
from bs4 import BeautifulSoup 
from selenium import webdriver 
import urllib2 
import subprocess 
import unicodecsv as csv 
import os 
import sys 
import io 

array = ["https://www.flightradar24.com/data/airports/gdn/departures", "https://www.flightradar24.com/data/airports/ktw/departures", "https://www.flightradar24.com/data/airports/krk/departures", "https://www.flightradar24.com/data/airports/wmi/departures", "https://www.flightradar24.com/data/airports/poz/departures", "https://www.flightradar24.com/data/airports/waw/departures", "https://www.flightradar24.com/data/airports/wro/departures", "https://www.flightradar24.com/data/airports/otp/departures", "https://www.flightradar24.com/data/airports/clj/departures", "https://www.flightradar24.com/data/airports/tsr/departures", "https://www.flightradar24.com/data/airports/bts/departures", "https://www.flightradar24.com/data/airports/lju/departures", "https://www.flightradar24.com/data/airports/alc/departures", "https://www.flightradar24.com/data/airports/bcn/departures", "https://www.flightradar24.com/data/airports/bio/departures", "https://www.flightradar24.com/data/airports/fue/departures", "https://www.flightradar24.com/data/airports/gro/departures", "https://www.flightradar24.com/data/airports/grx/departures", "https://www.flightradar24.com/data/airports/ibz/departures", "https://www.flightradar24.com/data/airports/xry/departures", "https://www.flightradar24.com/data/airports/ace/departures", "https://www.flightradar24.com/data/airports/mad/departures", "https://www.flightradar24.com/data/airports/agp/departures", "https://www.flightradar24.com/data/airports/pmi/departures", "https://www.flightradar24.com/data/airports/mah/departures", "https://www.flightradar24.com/data/airports/mjv/departures", "https://www.flightradar24.com/data/airports/reu/departures", "https://www.flightradar24.com/data/airports/sdr/departures", "https://www.flightradar24.com/data/airports/scq/departures", "https://www.flightradar24.com/data/airports/svq/departures", "https://www.flightradar24.com/data/airports/tfs/departures", "https://www.flightradar24.com/data/airports/tfn/departures", "https://www.flightradar24.com/data/airports/vlc/departures", "https://www.flightradar24.com/data/airports/zaz/departures", "https://www.flightradar24.com/data/airports/abz/departures", "https://www.flightradar24.com/data/airports/bfs/departures", "https://www.flightradar24.com/data/airports/bhd/departures", "https://www.flightradar24.com/data/airports/bhx/departures", "https://www.flightradar24.com/data/airports/brs/departures", "https://www.flightradar24.com/data/airports/cwl/departures", "https://www.flightradar24.com/data/airports/ema/departures", "https://www.flightradar24.com/data/airports/edi/departures", "https://www.flightradar24.com/data/airports/gla/departures", "https://www.flightradar24.com/data/airports/pik/departures", "https://www.flightradar24.com/data/airports/huy/departures", "https://www.flightradar24.com/data/airports/jer/departures", "https://www.flightradar24.com/data/airports/lba/departures", "https://www.flightradar24.com/data/airports/lpl/departures", "https://www.flightradar24.com/data/airports/ltn/departures", "https://www.flightradar24.com/data/airports/lhr/departures", "https://www.flightradar24.com/data/airports/lcy/departures", "https://www.flightradar24.com/data/airports/bqh/departures", "https://www.flightradar24.com/data/airports/stn/departures", "https://www.flightradar24.com/data/airports/lgw/departures", "https://www.flightradar24.com/data/airports/man/departures", "https://www.flightradar24.com/data/airports/sou/departures", "https://www.flightradar24.com/data/airports/ncl/departures", "https://www.flightradar24.com/data/airports/vie/departures", "https://www.flightradar24.com/data/airports/brq/departures", "https://www.flightradar24.com/data/airports/prg/departures", "https://www.flightradar24.com/data/airports/bud/departures", "https://www.flightradar24.com/data/airports/deb/departures", "https://www.flightradar24.com/data/airports/boj/departures", "https://www.flightradar24.com/data/airports/sof/departures", "https://www.flightradar24.com/data/airports/var/departures", "https://www.flightradar24.com/data/airports/ork/departures", "https://www.flightradar24.com/data/airports/dub/departures", "https://www.flightradar24.com/data/airports/noc/departures", "https://www.flightradar24.com/data/airports/kir/departures", "https://www.flightradar24.com/data/airports/snn/departures", "https://www.flightradar24.com/data/airports/mla/departures"] 

string = ("browser = webdriver.Firefox() 
datatable=[] 
    browser.get('%s') WebDriverWait(browser, 5).until(lambda s: s.execute_script("return jQuery.active==0")) 
browser.find_element_by_xpath('//button[contains(text(), "Load earlier flights")]').click() 
time.sleep(5) 
html = browser.page_source 
soup=BeautifulSoup(html,"html.parser") 
\n") 

file="/Users/Adam/Desktop/data.txt" 

with open(file, "w") as f: 
    for i in array: 
     f.write(string % i) 

f.close() 
+0

Modifiez la question avec votre code que vous avez essayé jusqu'à présent ... @Harley – Sanket

+0

C'est un peu pédant mais ce n'est pas du tout Python. Voulez-vous dire que les couleurs devraient être comme «couleurs = [« rouge »,« bleu »,« jaune »,« vert »]'? Ou sont 'red',' blue' etc les noms définis? –

Répondre

4

Ainsi, nous pouvons faire quelque chose comme ci-dessous:

array = ["red", "blue", "yellow", "green"] 

string = ("I have got a %s cat.\n") 

file="file.txt" 

with open(file, "w") as f: 
    for i in array: 
     f.write(string % i) 

Pour répondre à votre question ci-dessus dans les commentaires. Oui, cela fonctionne toujours si vous avez plusieurs paragraphes:

array = ["red", "blue", "yellow", "green"] 

string = ("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at hendrerit enim, ut sodales arcu. Donec vel purus vel orci consequat ultrices et vitae metus. Donec auctor, elit placerat porttitor accumsan, diam massa faucibus justo, eu egestas eros leo a nibh. Aliquam erat volutpat. Curabitur elementum at ante quis auctor. Pellentesque egestas massa id dolor bibendum, a aliquet dui fermentum. In hac habitasse platea dictumst. Nunc luctus mollis ligula, vel condimentum enim semper ac.\n\nI have got a %s cat.\n\nIn risus velit, gravida ac nisl a, rutrum pulvinar mi. In et enim vel ex vehicula ultrices. Donec facilisis pellentesque ultricies. Cras ultrices nec ipsum tincidunt cursus. Integer et libero rhoncus, malesuada orci a, pellentesque mi. Quisque vitae fringilla sapien. Proin sit amet erat erat. Vivamus id condimentum ligula. Donec lobortis tincidunt egestas. In convallis rutrum laoreet.\n\nSed ligula sem, mollis ac varius ac, laoreet et arcu. Integer id enim sollicitudin, eleifend nisi vitae, sagittis massa. Etiam eleifend rhoncus varius. Vestibulum condimentum nibh arcu, nec egestas dolor convallis eu. Sed gravida metus elit, vitae dictum augue vestibulum at. Aenean facilisis ipsum vel tincidunt facilisis. In interdum vitae mauris at malesuada.\n\n\n") 

file="file.txt" 

with open(file, "w") as f: 
    for i in array: 
     f.write(string % i) 

Sur une note de côté, croyez-le ou non, nous pouvons condenser le tout à une seule ligne:

open("file.txt", "w").write("\n".join("I have got a %s cat." % i for i in ["red", "blue", "yellow", "green"])+"\n") 

Python C'est merveilleux parfois.

+0

@Harley Oui, si vous utilisez plusieurs paragraphes, il travaillera –

+0

Donc je dois juste mettre \ n avant mes phrases et ça marche? – Harley

+0

@Harley '\ n' est le caractère de retour, il est ajouté à tout document en texte brut lorsque vous appuyez sur Entrée. Donc, partout où vous auriez normalement appuyé sur Entrée, ajoutez '\ n'. –

2
filename = "/data.txt" 
text = open(filename, 'w') 
colours=['red', 'blue', 'yellow', 'green'] 
for c in colours: 
    line = "I have got a %s cat\n" % c 
    text.write(line) 
text.close() 
+0

Je ne vois pas le besoin de 'w + 'ici. Il serait probablement utile si vous avez mentionné 'with' ou' .close', aussi. –

+0

oui ce n'est pas nécessaire, merci – Sanket

+0

Et si j'ai plus de senctence? Avec un paragraphe et avec quelques lignes. Cela fonctionne aussi? Donc je veux dire que j'ai par exemple 2-3 paragraphe avant cette phrase, et après cette phrase il y a plus de 2-3 paragraphes. Mon format reste dans la bonne forme? – Harley

2

Ajoutez le code suivant à votre script

text.close() 
text = open(filename, 'a') 
line = "I have got a %s cat\n" 
colours= ['red', 'blue', 'yellow', 'green'] 
for colour in colours: 
    text.write(line %color) 

text.close() 

post-scriptum N'oubliez jamais de fermer vos poignées de fichier

+0

Il n'y a pas besoin de construire une liste ici, vous pouvez simplement écrire chaque ligne que vous générez. –

+0

Oui, je l'ai réalisé, et l'ai mis à jour. Je vous remercie :) – Anuj