5

My goal is to change a word in a sentence and write into a text file.

I created a text file:

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

I have got this example sentence : "I have got a RED cat"

I want to change the "RED", the colour name, and write (append) every sentence to my data.txt.

colours={red, blue, yellow, green, etc..}

How can I take it into a loop, replace only this part and write every senctence to my txt file?

EDITED - Sanket request:

For example i start my text here, what is a paragraph so i want this tabulator or space before it in the .txt file too....... asfgas sagsaasgsagasgsagsaaggaggggg

And i continue my senctence when i arrive at "I have got a RED cat"

And after that my text is continuing.

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()
2
  • Edit question with your code that you tried so far... @Harley Commented Sep 29, 2017 at 9:49
  • This is a bit pedantic but that's not Python at all. Do you mean colours should be like colours = ['red', 'blue', 'yellow', 'green']? Or are red, blue etc defined names? Commented Sep 29, 2017 at 9:58

3 Answers 3

5

So we can do something like the below:

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)

To answer your above question in the comments. Yes, this will still work if you have multiple paragraphs:

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)

On a side note, believe it or not we can condense the whole thing down to one line:

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

Python is wonderful sometimes.

Sign up to request clarification or add additional context in comments.

13 Comments

@Harley Yes, if you use multiple paragraphs it will work
So i just have to put \n before my sentences and it is working?
@Harley \n is the return character, it's added to any plain text document when you press Enter. So wherever you would normally press Enter, add \n.
And where i just used some SPACE this format is staying too?
@Harley As in space characters? Yes they will stay. Have you actually run my snippet, it has space characters in it.
|
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()

3 Comments

I don't see the need for w+ here. It would probably help if you mentioned with or .close, too.
And what about if I have got more senctence? With a paragraph and with a few lines. It is working too? So i want to say that I have got for example 2-3 paragraph before this senctence, and after this senctence there are more 2-3 paragraph. My format is staying in the correct form?
not getting you properly, better you mention this points in your question, what exactly you want
2

Append the following code to your 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()

P.S. Never forget to close your file handles

1 Comment

There's no need to build a list here, you can just write each line as you generate it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.