プログラ生活

プログラム初学者のためのポイントを書いていこうと思います。たまに脇道それた記事もありますが、息抜きだとおもって気長にお付き合いください。

【Python】EXCEL作業を自動化する!

openpyxlを使うと、PythonでEXCELファイルを生成することができる。


わざわざPython使ってまでEXCELに依存するのか!?という意見はあろうと思うが、まだまだEXCEL依存の社会なのだからそりゃ需要あると思う。

さて、さっそくやってみる。



ステップ1 ライブラリのインストール(Anacondaは最初から入っているっぽい)

pip install openpyxl





九九表を作るコードサンプル

import openpyxl

# ワークブックを開く
wb = openpyxl.Workbook()

# ワークシートを作成する
ws = wb.create_sheet(title="kakezan", index=0)

# セルにデータを書き込む
for r in range(1, 10):

    for c in range(1, 10):

        # セルの位置を決める
        cell = ws.cell(row = r, column = c)
        
        # セルに対して値を書き込む
        cell.value = c * r

# ワークブックを保存する
wb.save("kakezan.xlsx")





こんな感じにEXCELが生成される。

f:id:hanabusa-snow:20201112132055p:plain



けっこういろいろできろうなので、EXCEL依存業務をしている方は、Pythonを勉強をするきっかけになるかもしれませんね!!

【PDF】cubePDF(無料)を使えばPDFにパスワードをかけられる!!

PDFにパスワードをかけるのが有償ツールでしかできないとおもっていた。

しかし、cubePDFを使えば無料でできることを知った!! これはすごい!!

www.cube-soft.jp

やりかたもチョー簡単!!

ステップ1 PDF化するのは印刷から!!

cubePDFは印刷する際のプリンタデバイスを「cubePDF」にするとPDF出力ができる。 f:id:hanabusa-snow:20201112085554p:plain




ステップ2 あとは設定画面からパスワードを入力するだけ!!

以下のオレンジ枠をいじるだけ
タグを「セキュリティ」に合わせて、あとはパスワードを入力するだけ。 f:id:hanabusa-snow:20201112085558p:plain




あとは、「変換」ボタンを押せば完了。





便利なものがあったものだ。
もっと早く知りたかった。

【数学・JavaScript】MathJaxは数学系のWebページでとても便利だ!!

LaTexをより身近にしたのが、MathJaxだろう。

数式をWebページでこんなにもきれいに表現できる、しかも簡単!!

LaTex自体は、プログラムをかくよりよっぽど単純ですので、ぜひ多くの人に使ってもらいたいものである。

以下をヘッダで宣言するだけ。

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } });
</script>
<script type="text/javascript"
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML">
</script>





必須ではないが、数式の出力が中央揃いになってしまうので左寄せにするためのもの

.MathJax_Display {   
    text-align: left !important;   
    text-indent: 2em !important; 
}





例 解の公式

\begin{eqnarray}
    ax^{2}+b^{2}+c=0 \\
    x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}
\end{eqnarray}

以下のように表示される。

$ax^{2}+b^{2}+c=0$

$x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$

【JavaScript】instascan.jsを使って、QRコードリーダーを作ってみた。

ブラウザでQRデコードをしたいとき、HTML5とJavaScriptで実装できる。
ビデオタグに埋め込めるので、ビューもある程度制御できる。

HTML

<video id="preview" ></video>

JavaScript

JSライブラリはこちらからいただきました。

github.com

<script>
  var videoTag = document.getElementById('preview');
  // mirror: trueにしておくことで、ビューが反転しない。
  var scanner = new Instascan.Scanner({ video: videoTag , mirror: true});
  const input_text = document.getElementById("input");
  
  scanner.addListener('scan', function (value) {
    input_text.value = value;
  });
  

  Instascan.Camera.getCameras()
  .then(function (cameras) {
      
      if (cameras.length > 0) {
        // cameras[0]は前面カメラ、cameras[1]は背面カメラ
        scanner.start(cameras[0]);
      }
      else {
        alert('カメラが見つかりません!');
      }
  })
  .catch(function(err) {
    alert(err);
  });
 
  
</script>

以下サンプルサイト

8drill.site

【Python】Python 3 エンジニア認定データ分析試験を受けてみた

以前に、Python3エンジニア認定基礎試験を受けて合格したが、

www.pon-x.jp

データ分析試験もあるようなのでノリで受けてみた。

f:id:hanabusa-snow:20201102175441p:plain

見事!?合格しました。
個人的には、基礎試験の方がむずかしかったような・・・。
実際に点数も今回の方がよいという・・・。
データ分析をかじっている人はきっとそうなのだと思う。

対策は、基礎試験の模試がDIVE INTO EXAMがかなり参考になったので、これのデータ分析版模試を一週間前から一日一回程度着手した。

exam.diveintocode.jp

これだけで十分な対策だった。

いつか、対策講座の講師をやりたいという野望をもっているので、どなたか連絡ください!!

【Python】スクレイピングの基礎

Webサイトの規約にのっとり許される範囲でスクレイピングをすべきだが、今回はサイトの内容を取得し、必要な項目を切り出す方法を紹介する。

ステップ1 Webサイトを確認しよう。

今回は本日のYahooの内容を1度だけ取得してみる。
f:id:hanabusa-snow:20201111114825p:plain




ステップ2 サイトを確認しよう。

今回は、以下の赤枠のテキストを抽出することを目的にし、このテキストはどのような構造になっているかを確認します。 f:id:hanabusa-snow:20201111114838p:plain




ステップ3 Chromeで構造を確認しよう。

今回はChromeを使いますが、右クリックで検証ボタンを押してみましょう。


f:id:hanabusa-snow:20201111115149p:plain




ステップ4 該当箇所の構造を確認しよう。

該当の箇所の構造を確認します。

f:id:hanabusa-snow:20201111114833p:plain divタグのclass名をコピーして使います。



ステップ4 Pythonで抽出してみよう。

以下のコードだけでOK!!

import requests
from bs4 import BeautifulSoup

html="https://www.yahoo.co.jp/"
source=requests.get(html)
# print(source.text) で取得した内容を確認できる


soup = BeautifulSoup(source.text, 'html.parser')

# TRuzXRRZHRqbqgLUCCco9 ← はdivタグのclass名
contents = soup.find('div', class_="TRuzXRRZHRqbqgLUCCco9")


print(contents.text)
#  -> 首相 バイデン氏と電話会談へNEW





ここら辺の内容と組み合わせて使うと効果的!!

www.pon-x.jp www.pon-x.jp www.pon-x.jp





スクレイピングはサーバーに負荷をかけるなど、管理者に迷惑をかけないよう、また利用規約にのっとって行いましょう。