2017-01-23 115 views
0

我試圖創建一個Python腳本,它將(a)讀取帶有數據的csv文件,(b)獲取該數據並插入它(html)字符串的特定標籤,(c),最後將修改後的html字符串寫入html文件。如何從csv文件讀取數據並將數據插入html文件

到目前爲止,我有腳本從一個CSV文件在這裏讀到:

import csv 

with open('data.csv', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print row 

f.close() 

我也有,這將在這裏寫一個HTML文件中的腳本:

import webbrowser 

# open blank file 
f = open('template.html', 'w') 

message = """<style scoped="scoped" type="text/css">h1.page-title { display: none; }</style> 

<p>&nbsp;</p> 

<div class="row"> 
    <div class="col-xs-12 col-sm-8 col-md-9"> 
     <div class="twoblocks"> 
      <div class="blocks-holder grey"> 

       <div class="block-left w50 bkgimage" style="background-image: url('/images/common/not_pictured-wide.jpg');"> 
        <div class="force-16x9">&nbsp;</div> 
       </div> 

       <div class="block-right w50 content" style="width: 50%;"> 
       <h1>Dr. Rosen Rosen</h1> 
       <span class="superhead">Title, <a href="index.php?Itemid=XXXX">Department</a></span> 
       </div> 

      </div> 
     </div> 

     <h3>Biography</h3> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam hendrerit mauris dictum metus porta, in consectetur dui aliquam. Nunc eu pharetra ipsum. Donec nec tincidunt dolor. Mauris dolor nisi, pellentesque quis tellus malesuada, placerat tristique dui. Phasellus at dui in nunc vestibulum accumsan. Aliquam erat volutpat. Duis non interdum ipsum, et tristique leo. Pellentesque condimentum, felis id placerat placerat, purus purus mattis urna, ac sodales ipsum ipsum ut risus. Aenean eget molestie ante, nec blandit magna. Integer efficitur fringilla odio sit amet sagittis. Sed ante turpis, pulvinar condimentum vehicula ac, tempus cursus ante. Donec eu scelerisque metus. Vestibulum facilisis tincidunt fermentum. Phasellus consequat odio in libero pharetra rutrum.</p> 

     <hr /> 

     <h3>Education</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Ph.D., Field of Degree, University of Lorem Ipusm, 1990</li> 
      <li>M.S., Field of Degree, University of Lorem Ipusm, 1990</li> 
      <li>B.S., Field of Degree, University of Lorem Ipusm, 1990</li> 
     </ul> 

     <hr /> 

     <h3>Classes Taught</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - First Class</a></li> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Second Class</a></li> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Third Class</a></li> 
     </ul> 

     <div id="classes" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Fourth Class</a></li> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Fifth Class</a></li> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Sixth Class</a></li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#classes"></button> 

     <hr /> 

     <h3>Affiliations</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Organization</li> 
      <li>Organization</li> 
      <li>Organization</li> 
     </ul> 

     <div id="affiliations" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li>Organization</li> 
       <li>Organization</li> 
       <li>Organization</li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#affiliations"></button> 

     <hr /> 

     <h3>Publications</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
     </ul> 

     <div id="publications" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#publications"></button> 

    </div> 

    <aside class="col-xs-12 col-sm-4 col-md-3"> 
     <div class="well"> 

      <h3>Contact</h3> 
      <p>Address <br />Building Name <br />Room # <br />City, State, Zip <br /> <a href="/map"><i class="ico-map"></i>Map</a></p> 
      <p><i class="ico-phone"></i> XXX.XXX.XXXX <br /> <a href="mailto:">[email protected]</a></p> 
     </div> 

     <h3>Academic Interests</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Area</li> 
      <li>Another Area</li> 
      <li>Area</li> 
      <li>Another Area</li> 
     </ul> 

    </aside> 

</div>""" 

# write to file 
f.write(message) 

# close file 
f.close() 

# open in browser 
filename = 'file:////Scripts/' + 'template.html' 
webbrowser.open_new_tab(filename) 

所以作爲現在,我可以從csv文件中讀取信息,也可以使用我正在使用的模板創建一個html文件。我卡住的地方是如何獲取這些csv信息並將這些信息以特定的順序粘貼到html中。

例如,csv中的每一行都有填寫html模板的信息。基本上,第一列包含<h1>Dr. Rosen Rosen</h1>的「名稱」,下一列有<span class="superhead">Title,的「標題」,依此類推。

這個腳本基本上允許我使用csv和一堆信息並構建一個網頁,以便我不必不斷地進入代碼並手動輸入它。我只是想知道如何讓這個腳本做我想做的事情,因爲我對Python比較陌生。

任何幫助或建議表示讚賞。

+1

我想你問的是如何在HTML網頁中輸入數據,事實上它來自CSV與我認爲無關。看看Jinja2 – TankorSmash

回答

0

您需要將腳本合併到一個腳本中。對於csv文件中的每一行,您都會爲該醫生提取數據,然後使用字符串連接將其與ginormous html字符串進行拼接。然後,將該字符串寫入輸出文件。

下面是一個輸出名稱,標題和部門數據的示例。

但是,我必須同意@TankorSmash,這可能不是最好的解決方案。某種templating engine通常更容易使用。

import webbrowser 
import csv 

# open blank file 
f = open('template.html', 'w') 


with open('./data.csv', 'r') as c: 
    reader = csv.reader(c) 
    for row in reader: 
     name = row[0] 
     title = row[1] 
     department = row[2] 

     message = """<style scoped="scoped" type="text/css">h1.page-title { display: none; }</style> 

<p>&nbsp;</p> 

<div class="row"> 
    <div class="col-xs-12 col-sm-8 col-md-9"> 
     <div class="twoblocks"> 
      <div class="blocks-holder grey"> 

       <div class="block-left w50 bkgimage" style="background-image: url('/images/common/not_pictured-wide.jpg');"> 
        <div class="force-16x9">&nbsp;</div> 
       </div> 

       <div class="block-right w50 content" style="width: 50%;"> 
       <h1>""" + name + """</h1> 
       <span class="superhead">""" + title + """, <a href="index.php?Itemid=XXXX">""" + department + """</a></span> 
       </div> 

      </div> 
     </div> 

     <h3>Biography</h3> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam hendrerit mauris dictum metus porta, in consectetur dui aliquam. Nunc eu pharetra ipsum. Donec nec tincidunt dolor. Mauris dolor nisi, pellentesque quis tellus malesuada, placerat tristique dui. Phasellus at dui in nunc vestibulum accumsan. Aliquam erat volutpat. Duis non interdum ipsum, et tristique leo. Pellentesque condimentum, felis id placerat placerat, purus purus mattis urna, ac sodales ipsum ipsum ut risus. Aenean eget molestie ante, nec blandit magna. Integer efficitur fringilla odio sit amet sagittis. Sed ante turpis, pulvinar condimentum vehicula ac, tempus cursus ante. Donec eu scelerisque metus. Vestibulum facilisis tincidunt fermentum. Phasellus consequat odio in libero pharetra rutrum.</p> 

     <hr /> 

     <h3>Education</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Ph.D., Field of Degree, University of Lorem Ipusm, 1990</li> 
      <li>M.S., Field of Degree, University of Lorem Ipusm, 1990</li> 
      <li>B.S., Field of Degree, University of Lorem Ipusm, 1990</li> 
     </ul> 

     <hr /> 

     <h3>Classes Taught</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - First Class</a></li> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Second Class</a></li> 
      <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Third Class</a></li> 
     </ul> 

     <div id="classes" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Fourth Class</a></li> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Fifth Class</a></li> 
       <li><a target="_blank" href="http://catalog.example.com/search/?search=CLA+###">CLA ### - Sixth Class</a></li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#classes"></button> 

     <hr /> 

     <h3>Affiliations</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Organization</li> 
      <li>Organization</li> 
      <li>Organization</li> 
     </ul> 

     <div id="affiliations" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li>Organization</li> 
       <li>Organization</li> 
       <li>Organization</li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#affiliations"></button> 

     <hr /> 

     <h3>Publications</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
     </ul> 

     <div id="publications" class="collapse"> 

      <ul class="list-unstyled list-spaced top-0"> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
       <li>"Article Title." <em>Name of Publication.</em> Volume, Page Numbers. Authors (Date).</li> 
      </ul> 

     </div> 

     <button type="button" class="btn btn-default expand collapsed" data-toggle="collapse" data-target="#publications"></button> 

    </div> 

    <aside class="col-xs-12 col-sm-4 col-md-3"> 
     <div class="well"> 

      <h3>Contact</h3> 
      <p>Address <br />Building Name <br />Room # <br />City, State, Zip <br /> <a href="/map"><i class="ico-map"></i>Map</a></p> 
      <p><i class="ico-phone"></i> XXX.XXX.XXXX <br /> <a href="mailto:">[email protected]</a></p> 
     </div> 

     <h3>Academic Interests</h3> 
     <ul class="list-unstyled list-spaced"> 
      <li>Area</li> 
      <li>Another Area</li> 
      <li>Area</li> 
      <li>Another Area</li> 
     </ul> 

    </aside> 

</div>""" 

     # write to file 
     f.write(message) 

# close file 
f.close() 

# open in browser 
filename = 'template.html' 
webbrowser.open_new_tab(filename)