2017-08-30 57 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 

这项工作,如果任何人都可以发现任何错误,随时告诉我。谢谢大家试图帮助^^