2017-09-29 84 views
5

我的目标是更改句子中的单词并写入文本文件。替换for循环中的一个部分文本元素Python

我创建一个文本文件:

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

我有这个例子中的一句话:“我有一个红色的猫”

我想改变“红”,颜色名称,写(追加)每个句子到我的data.txt。

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

我怎样才能把它变成一个循环,只替换这部分,并将每个句子写入我的txt文件?

编辑 - SANKET要求:

例如,我从这里开始我的文字,什么是一个段落,所以我想在.txt文件这个制表或空间之前,它太....... asfgas sagsaasgsagasgsagsaaggaggggg

而我继续我的senctence当我在“我有一个红色的猫”

在那之后我的文字继续到达。

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

用你迄今试过的代码编辑问题...... @Harley – Sanket

+0

这有点迂腐,但这根本不是Python。你是说颜色应该像'颜色= ['红','蓝','黄','绿']'?或者是“红色”,“蓝色”等定义的名称? –

回答

4

因此,我们可以这样做以下:

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) 

要回答你上面的问题的意见。是的,这将仍然工作,如果你有多个段落:

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) 

在一个侧面说明,无论你相信与否,我们可以下凝聚了整个事情到一个行:

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

的Python有时候是很棒的。

+0

@哈利是的,如果你使用多个段落,它将工作 –

+0

所以我只需要把\在我的句子之前,它正在工作吗? – Harley

+0

@Harley'\ n'是返回字符,当您按Enter键时,它会添加到任何纯文本文档中。所以无论你通常按Enter键,添加'\ 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

我在这里看不到需要'w +'。如果你提到''''或'.close',它可能会有所帮助。 –

+0

是不需要,谢谢 – Sanket

+0

如果我有更多的句子,那么呢?用一段和几行。它也在工作?所以我想说我在这个句子之前已经得到了2-3段,在这个句子之后还有2-3段。我的格式保持正确的格式? – Harley

2

以下代码附加到脚本

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() 

附:永远不要忘记关闭你的文件句柄

+0

这里没有必要建立一个列表,你可以在生成它的时候写出每一行。 –

+0

是的,我意识到并更新了它。谢谢 :) – Anuj

相关问题