2017-01-23 3 views
0

(a) 데이터가 포함 된 csv 파일을 읽고 (b) 해당 데이터를 가져와 삽입하는 Python 스크립트를 만들려고합니다. 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,의 '제목'을 가지며 html을 통해 아래로 이어집니다.

이 스크립트는 기본적으로 많은 정보와 함께 CSV를 사용하고 웹 페이지를 구축 할 수있게하므로 코드에 계속 들어가서 수동으로 입력 할 필요가 없습니다. 나는이 스크립트가 파이썬에 비교적 익숙하지 않기 때문에 내가 원하는 것을하기 위해이 스크립트를 얻는 방법을 알아내는 데 문제가있다.

도움이나 의견을 보내 주시면 감사하겠습니다.

+1

당신은 HTML 웹 페이지에 데이터를 입력하는 방법을 묻는 것 같아요. 사실 그것은 CSV에서 나온 것입니다. 나는 생각하지 않습니다. Jinja2와 같은 것을 살펴보십시오. – TankorSmash

답변

0

스크립트를 하나의 스크립트로 결합해야합니다. csv 파일의 각 행에 대해 해당 의사의 데이터를 추출한 다음 문자열 연결을 사용하여 gnormous 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) 
관련 문제