PythonのOpenpyxlを使って、Excelデータをテキストファイルに移植して、テキストファイルを量産したいと思っております。
(御参考として、最終操作対象となるHTMLファイル全体は下部に記載しておきます。)
Excelから、HTMLの各要素を引っ張り、下記の様な<div>~</div>までを200セットを量産したいと思っております。
===========
もう少し説明すると、下記の様なエクセルがあります(実際は、200か国です)。
上記のHTML書式に合わせて、"ck2"は、"Albania"なので、valueも変えて下記の様に書いたテキストを、200か国分、量産してゆきたいです。
===============================
<div> <label for="ck2">Albania:</label> <input type="checkbox" id="ck2" name="checkbox" value="Albania"> </div> ==============勿論、200か国分のデータを手でコピペしたり、エクセルで関数を組んでぐちゃぐちゃやれば、テキストファイルの量産は可能ですが、Openpyxlを使って、量産したいと思っております。
大きな処理の流れでも、教えて頂ければ、助かります。
よろしくお願いします。
<後日の解決策>
ppaulさんのコメントの通り、Pythonの標準機能のf文字列で処理できました。
エクセル上で、TEXTJOIN関数を使い、["ck1","ck2","ck3","ck4",・・・・・ck18","ck19","ck20"]とかを編集する必要はありましたが。。。
下記が、Pythonコードになります。(これを走らせると、テキストファイルが自動で量産できます。)
i=0 for i in range(20): id = ["ck1","ck2","ck3","ck4","ck5","ck6","ck7","ck8","ck9","ck10","ck11","ck12","ck13","ck14","ck15","ck16","ck17","ck18","ck19","ck20"] country = ["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua & Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize"] pattern = ''' <div> <label for={}>{}:</label> <input type="checkbox" id="{}" name="checkbox" value="{}"> </div>''' print(pattern.format(id[i], country[i], id[i], country[i])) i=i+1
<御参考。編集対象のHTML>
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>test</title> </head> <body> <h1>Test</h1> <p>Where do you want to go ???</p> <form action="/" method="POST" enctype="multipart/form-data"> <div> <p>Select at least one(1) country.</p> </div> <br> <div> <label for="ck1">Afgahanistan:</label> <input type="checkbox" id="ck1" name="checkbox" value="Afgahanistan"> </div> <div> <label for="ck2">Albania:</label> <input type="checkbox" id="ck2" name="checkbox" value="Albania"> </div> <div> <label for="ck3">Algeria:</label> <input type="checkbox" id="ck3" name="checkbox" value="Algeria"> </div> <div> <label for="ck4">Andorra:</label> <input type="checkbox" id="ck4" name="checkbox" value="Andorra"> </div> <div> <input type="submit" value="SEND"> </div> </form> <br> <br> <p> Your selected countries are belows.</p> <p> ↓ ↓ ↓</p> <p id="msg"></p> <script> function valueChange(){ let res=[]; res.push(ck1.checked?'afganistan':''); res.push(ck2.checked?'Albania':''); res.push(ck3.checked?'Algeria':''); res.push(ck4.checked?'Andorra':''); msg.innerHTML=res.join("<br>"); } let ck1= document.getElementById('ck1'); ck1.addEventListener('change',valueChange); let ck2= document.getElementById('ck2'); ck2.addEventListener('change',valueChange); let ck3= document.getElementById('ck3'); ck3.addEventListener('change',valueChange); let ck4= document.getElementById('ck4'); ck4.addEventListener('change',valueChange); let msg = document.getElementById('msg'); </script> </body> </html>
回答2件
あなたの回答
tips
プレビュー