Pythonでクリップボードの内容をExcelに貼り付けられるように変換するスクリプト

paste

photo credit: Jürgo Stormtrooper paste-up via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアでも簡単にできるPythonによるクリップボードを使ったツールの作り方をお伝えしています。

前回の記事はコチラ。

Pythonで文字列の中に変数などの値を埋め込むformatメソッドの使い方
Pythonでクリップボードを使った便利ツールを作る非エンジニア&Windowsユーザー向けのシリーズです。今回はPythonで文字列の中に変数の値を埋め込むというformatメソッドの使い方をお伝えします。

文字列に変数などの値を埋め込むことができるformatメソッドについてお伝えしました。

さて、今回ですが、これまでお伝えした内容の応用編。

例えばWebページでコピーした内容を、Excelシートに表形式に貼り付けたいけど、うまくいかなくてムシャクシャ…!

…というときありますよね!?

それをPytonでササっとツールを作っちゃって解決しようというのが本日のお題です。

ということで、Pythonでクリップボードにコピーした内容をExcelシートに表形式で貼り付けられるようにいい感じに変換するツールの作り方です。

では、行ってみましょう。

スポンサーリンク

Webページの定義リストをExcelの表形式にしたい

今回は以下のページからJavaScriptのメソッド一覧を取得してみたいと思います。

String – JavaScript | MDN

Pythonの記事なのに、JavaScriptのページを取得しますw

メソッド一覧ですが、以下のように、見た目ではメソッド名、解説が交互に改行されて表示されている状態、HTML的には定義リストを使った表記になっています。

MDN JavaScriptのページ

これを、メソッド名と解説が一行になるように、Excelシート上にデータを取得したいのです。

普通にコピー&ペーストをした場合

まさか、一行ずつマウスでコピペ…してませんよね?

そうでなくても、まとめてやろうにしても、ちょっと面倒です。

例えば、以下のように範囲選択をしてから Ctrl + C でクリップボードにコピーしますね。

MDN JavaScriptのページを範囲選択

その状態で、 Ctrl + V でExcelシートに貼り付けると、以下のようにメソッド名と解説が同じ列の別の行に交互に貼り付けとなってしまいました。

Webページの内容をExcelにペーストした

エクセルVBAマクロを作れば対応はできますが、エクセルVBAはファイル単位で仕込まないといけませんし、シートに書き出してからセルの場所を変えていく処理…意外と面倒だと思います。

おそらく、Pythonのほうが手っ取り早く解決ができます。

定義リストを表形式に変換するPythonスクリプト

今回、作成したPythonのスクリプトがこちらです。

import pyperclip
lines =pyperclip.paste().split('\r\n')
text = ''
for i in range(0,len(lines),2):
    text = '{0}{1}\t{2}\n'.format(text,lines[i],lines[i+1])
pyperclip.copy(text)

今まで出てきた内容を応用すれば完成しちゃいます。

以下、それぞれ解説をしていきますね。

pyperclipモジュールとその使い方

今回もクリップボードを使うので、pyperclipモジュールのインポートをしつつ、クリップボードからのテキストデータ取得にpaste関数クリップボードへのテキストデータコピーにcopy関数を使います。

import pyperclip
変数 = pyperclip.paste()
pyperclip.copy(テキスト)

以下記事もご参考ください。

Pythonでクリップボードを操作!pyperclipを使ってコピーしたデータを取得する
Windowsユーザーの初心者向けにPythonでお仕事に役立つツールを作る方法をお届けしています。今回は、Pythonでクリップボードを操作するための最初の一歩、クリップボードからデータを取得する方法です。
初心者でも簡単!Pythonでデータを加工してクリップボードにコピーをする方法
Pythonでクリップボードを操作して便利ツールを作る方法を初心者向けにお伝えしております。Pythonでデータを加工してクリップボードにコピーするpyperclip.copyの使い方です。

改行コードで区切ってリスト化

pyperclip.paste関数で取得したクリップボードのデータは、長い文字列になっていますので、まずは一行単位で区切ってリスト化します。

その場合、「\r\n」つまりWindowsの改行コードCRLFを区切り文字としてsplitメソッドを使いますね。

文字列.split(区切り文字)

区切り文字を省略すると空白文字(スペース、改行、タブ)は全部いい感じで区切ってくれるのですが、今回は解説の文字列の中にスペースが微妙に混じっていて、そこで区切られると困っちゃうので、「\r\n」をズバっと指定しています。

Pythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方
初心者向けにPythonプログラミングの基本中の基本をフォルダ作成ツールを作りながら学んでおります。今回は、PythonのSplitメソッドで改行コードで文字列を分割してリストに保存する方法です。

2行単位でforループを回す

forループですが、今回は2ずつ回すというのがコツです。

というのも、クリップボードから取得したテキストは、1行目にメソッド名、2行目に解説、3行目に別のメソッド名、…といった2行単位の構成となっていますからね。

その場合は、range関数を使ったforループになり、ステップに2を設定すればよいということです。

for 変数 in range([開始値], 終了値[, ステップ]):
  # 処理
Pythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法
Pythonで初心者でも簡単にできるクリックボードを使ったツールの作り方をお伝えしています。今回はPythonのリストのforループで要素とともにインデックス番号も取り出す方法についてお伝えします。

なお、開始値はリストの最初のインデックス0、終了値はインデックスの要素数ですのでlen関数を使います。

formatメソッドを使った文字列の連結

forループを回しながら、変数textにクリップボードに戻す用のテキストを生成していきます。

内容としては、毎回のループでtext{0}に

  • 偶数番号のリストの要素{1}=メソッド名
  • タブ(\t)
  • 奇数番号のリストの要素{2}=解説
  • 改行(\n)

を連結するという処理です。少しややこしいですが、一個ずつ確認すればそこまで難しくはないはず。なにせformatメソッドを使っていますから。

Pythonで文字列の中に変数などの値を埋め込むformatメソッドの使い方
Pythonでクリップボードを使った便利ツールを作る非エンジニア&Windowsユーザー向けのシリーズです。今回はPythonで文字列の中に変数の値を埋め込むというformatメソッドの使い方をお伝えします。

定義リストをExcelシートに貼り付けた結果

では、作成したスクリプトでコピペを実行してみましょう。

まず、先ほどのWebページからメソッドの解説部分を範囲選択してクリップボードにコピーします。

次に、上記Pythonスクリプトを実行。

その上で、Excelシートに貼り付けてみましょう。

Pythonでクリップボードの内容を整形してExcelに貼り付け

はい、ちゃんとA列にメソッド名、B列にその解説、といったように表形式でペーストされていますね。

まとめ

Pythonでクリップボードの内容をExcel形式にペーストできるように整形するスクリプトを作りました。

Webページによってはいろんなパターンがあると思いますので、それに合わせて調整加えるとよいです。

Python…今回みたいな、ちょこちょこした、ある意味使い捨てツールを作るのにもすごく適していると感じました。

さて、次回ですが、このツールをファイル書き込みできるようにして、パワーアップさせていきたいと思います。

Pythonでテキストファイルに追加で書き込みをする基本中の基本
非エンジニアの初心者向けにPythonでクリップボードを操作する便利ツールの作り方をお伝えしています。今回はPythonでテキストファイルに追加で書き込みをする基本中の基本の方法をお伝えします。

どうぞお楽しみに!

連載目次:Pythonで簡単作成!クリップボードを使ったツールを作ろう

一般ビジネスマンの非エンジニア向けにPythonのpyperclipモジュールによる、クリップボードを使った簡単便利ツールの作り方をお伝えします。Webページやテキストファイルからコピーしたテキストを加工して貼り付ける…といったことが可能になります。超便利です。
  1. Pythonでクリップボードを操作!pyperclipを使ってコピーしたデータを取得する
  2. 初心者でも簡単!Pythonでデータを加工してクリップボードにコピーをする方法
  3. Pythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法
  4. Pythonで文字列の中に変数などの値を埋め込むformatメソッドの使い方
  5. Pythonでクリップボードの内容をExcelに貼り付けられるように変換するスクリプト
  6. Pythonでテキストファイルに追加で書き込みをする基本中の基本
  7. Pythonでcsvファイルにデータを書き込みをする基本中の基本
タイトルとURLをコピーしました