2017-08-30 47 views
0

更換HTML字符串我已經在這場鬥爭了一段時間。我一直在嘗試使用Python修改基於文件夾內容的html。但每當我嘗試修改它時,整個事情都會崩潰。我是新的Python和HTML。我做了一個類,將加載HTML文件和一些子功能進行修改:與Python

class htmlfile(object): 
    data = "" 

    def openHTML(self, name="main.html"): 
     # f = open('main.html') 
     # for line in f: 
     #  #print line.replace("Thinominal", "") 
     with open(name) as myHtml: 
      data = myHtml.read() 
     self.data = data 

    # def __repr__(self): 
    #  return "Test()" 
    def __str__(self): 
     return self.data 

    def replace(self, location, insert): 
     self.data.replace(location, insert) 

    def makeBackground(self, location): 
     self.data.replace("backgrounds: [", "backgrounds: ["+ getPhotos2()) 

和其他功能從文件夾中獲得的「內容」 /照片列表並返回,後來被插入到字符串HTML:

def getPhotos2(dir, type="jpg"): # get Photo from a directory with a chosen Type. Default Type = jpg 
    os.chdir(dir) 
    data = "" 
    for file in glob.glob("*.%s" % type): 
     data = data + "{src: '%s/%s', fade: 2000}," % (dir, file) 
    return data 

但每當我運行這個,這個錯誤顯示:

self = <__main__.htmlfile object>, self.data = '<!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <...\n</script>\r\n<!-- /Navbar-->\r\n\r\n</body>\r\n\r\n</html>', self.data.toString undefined, global getPhotos2 = <function getPhotos2> 

我不明白。 python是不是打開一個字符串/文本文件的HTML?並打印它?如果你只是做:

html = """ <head>Hello World</head>""" 
print html 

這將工作。你也可以這樣做:

html.replace("hello world", "BYE BYE")了。那麼我在這裏做錯了什麼?我錯過了什麼嗎?任何意見,將不勝感激。

這是我如何調用該函數:

htmlfile = htmlfile() 
htmlfile.openHTML() 
htmlfile.makeBackgroud("background") 
print htmlfile 

我想只能夠更換的HTML的任何部分,就好像它是一個字符串。例如: 這是手動填充:

backgrounds: [ 
     {src: './img/nature1.jpg', fade: 2000}, 
     {src: './img/bw1.jpg', fade: 2000}, 
     {src: './img/portrait1.jpg', fade: 2000}, 
     {src: './img/portrait5.jpg', fade: 2000}, 
     {src: './img/portrait2.jpg', fade: 2000}, 
     {src: './img/portrait3.jpg', fade: 2000}, 
     {src: './img/portrait4.jpg', fade: 2000}, 
     {src: './img/forest.jpg', fade: 2000} 

    ] 

與「makeBackground」功能,它會產生這些字符串和HTML內插入。如果我有一個包含coolImg.jpg的文件夾調用背景。使背景生成:{src: './img/coolImg.jpg', fade: 2000}並將其插入「背景:」部分。結果在:

backgrounds: [ 
     {src: './img/nature1.jpg', fade: 2000}, 
     {src: './img/bw1.jpg', fade: 2000}, 
     {src: './img/portrait1.jpg', fade: 2000}, 
     {src: './img/portrait5.jpg', fade: 2000}, 
     {src: './img/portrait2.jpg', fade: 2000}, 
     {src: './img/portrait3.jpg', fade: 2000}, 
     {src: './img/portrait4.jpg', fade: 2000}, 
     {src: './img/forest.jpg', fade: 2000}, 
     {src: './background/coolImg.jpg', fade: 2000} <- THIS HERE 
    ] 
+0

您還沒有表現出任何差錯。我們在哪裏調用函數?你對結果做什麼? –

+2

讓我們知道你如何調用函數以及你想達到什麼目的。一個例子會有所幫助。 – Ajay2588

+0

對不起。我編輯了我如何調用函數的代碼。 – Rook

回答

0

我想通了如何使它現在工作。作爲一個小菜主要是我的錯。我忘了設置替換的字符串的值來替換原始字符串。像這樣:

self.data = self.data.replace(oldstring, newstring) 

「self.data =」丟失。 我也忘了給與我的函數要求的相同數量的參數。

def getPhotos2(dir, type="jpg"): # get Photo from a directory with a chosen Type. Default Type = jpg 
os.chdir(dir) 
data = "" 
for file in glob.glob("*.%s" % type): 
    data = data + "{src: '%s/%s', fade: 2000}," % (dir, file) 
return data 

print "Content-type: text/html\n" 


# html class 
class htmlfile(object): 
data = "" 

def openHTML(self, name="main.html"): 
    with open(name) as myHtml: 
     data = myHtml.read() 
    self.data = data 

def __str__(self): 
    return self.data 

def replace(self, location, insert): 
    self.data = self.data.replace(location, insert) 
def makeBackground(self, location): 
    self.data = self.data.replace("backgrounds: [", "backgrounds: ["+ getPhotos2(location)) 


htmlfile = htmlfile() 
htmlfile.openHTML() 
htmlfile.makeBackground("photo") 
print htmlfile 

這項工作,如果任何人都可以發現任何錯誤,隨時告訴我。謝謝大家試圖幫助^^