初心者でも簡単!Pythonでデータを加工してクリップボードにコピーをする方法


clipboard

photo credit: DaveCrosby 159/365+1 Clipboard via photopin (license)

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

Pythonでクリップボードを操作して便利ツールを作る方法を初心者向けにお伝えしております。

前回の記事はコチラ。

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

pyperclipモジュールを使って、クリップボードからデータを取得する方法をお伝えしました。

その続きということで、クリップボードから取得したデータを加工して、その加工したテキストをクリップボードへコピーします。

では、Pythonでデータを加工してクリップボードにコピーする方法です。

行ってみましょう!

スポンサーリンク

前回のおさらい

まず目的としていることですが、以下のような範囲をクリップボードにコピーします。
クリップボードにコピーしたデータ

それをPythonで処理すると以下のように、ハイフンと半角スペースが各行の冒頭に挿入される、つまりMarkdownのリストにしたいのです。

Pythonでリスト化してからペーストしたデータ

それを目指して、前回作ったコードはコチラ。

import pyperclip
print(pyperclip.paste())

短い!

pyperclipモジュールをインストールして、クリップボードの内容を取得してprintするだけのプログラムでした。

そして、取得したデータは長いテキストになっていまして、以下のような内容になっています。

Pythonで標準ライブラリのモジュールをインポートして使ってみよう\r\nPythonでosモジュールのmkdir関数を使ってフォルダを作成する超簡単なプログラム\r\nPythonプログラミングの基本中の基本!forループによる繰り返しの作り方\r\nPythonでデータをまとめて取り扱う基本中の基本!リストの使い方とforループ\r\nPythonで指定したフォルダが存在しているかどうかを調べるos.path.existsの使い方\r\nPythonで条件分岐をする基本中の基本!if~else文の作り方\r\nPythonでテキストファイルを開いてデータを読み込む基本中の基本\r\nPythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方\r\nPythonで文字列のスペース・タブ・改行を取り除くstripメソッドの使い方\r\nPythonで開いたファイルのクローズを忘れやすい人のためのwith文の使い方\r\nPythonでcsvファイルからデータを読み込む最初の一歩\r\n

Windowsですので改行位置に「\r\n」つまりキャリッジリターンとラインフィード(CRLF)が挿入されているということですね。

今回は、この長~いテキストをリスト化することから進めていきます。

\r\nで区切ってリスト化する

前述のテキストを「\r\n」で区切って分割するというと、以前お伝えしたsplitメソッドが使えそうです。

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

splitメソッドは以下のように書いて、引数sepには区切り文字を指定します。すると、区切り文字で分割してリスト化します。

文字列.split(sep)

なんとなく引数に「\r\n」を指定したくなりますが、引数を省略の場合は空白文字(スペース、タブ、改行)で区切るように動作してくれるのを思い出しました。

いったん、引数なしでやってみましょうか。

まず、対象となる選択範囲をクリップボードにコピーして、以下のプログラムを実行します。

import pyperclip
print(pyperclip.paste().split())

すると、以下のような出力が得られます。

Pythonでクリップボードのテキストをsplitしてリスト化

[‘Pythonで標準ライブラリのモジュールをインポートして使ってみよう’, ‘Pythonでosモジュールのmkdir関数を使ってフォルダを作成する超簡単なプログラム’, ‘Pythonプログラミングの基本中の基本!forループによる繰り返しの作り方’, ‘Pythonでデータをまとめて取り扱う基本中の基本!リストの使い方とforループ’, ‘Pythonで指定したフォルダが存在しているかどうかを調べるos.path.existsの使い方’, ‘Pythonで条件分岐をする基本中の基本!if~else文の作り方’, ‘Pythonでテキストファイルを開いてデータを読み込む基本中の基本’, ‘Pythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方’, ‘Pythonで文字列のスペース・タブ・改行を取り除くstripメソッドの使い方’, ‘Pythonで開いたファイルのクローズを忘れやすい人のためのwith文の使い方’, ‘Pythonでcsvファイルからデータを読み込む最初の一歩’]

お!ちゃんと「\r\n」で分割されてリスト化されていますね。CRLFでも引数なしでうまく分割してくれました。

もちろん、以下のように引数に「\r\n」を指定しても大丈夫です。

print(pyperclip.paste().split('\r\n'))

クリップボードにコピーするテキストを生成する

これでクリップボードからのデータ一行ずつを、リストの要素として確保できました。

リストの要素それぞれに処理をしていくとなると、以前お伝えしたforループを使うのがよさそうな気がします。

Pythonでデータをまとめて取り扱う基本中の基本!リストの使い方とforループ
初心者向けにフォルダ操作を題材としてPythonプログラミングの基本中の基本についてお伝えしています。今回はPythonでデータをまとめて取り扱うリストについてその基本とforループにより繰り返しついてです。
for 変数 in リスト:
  # 処理

この「# 処理」のところで、各要素の冒頭に「- 」(ハイフンと半角スペース)を追加するような処理を入れていきたいですね。

ところで、クリップボードから取得したデータは長~い文字列でしたよね。

ですから加工してクリップボードに戻すデータも長~い文字列である必要があります。

イメージとしては

Pythonで標準ライブラリのモジュールをインポートして使ってみよう\r\n- Pythonでosモジュールのmkdir関数を使ってフォルダを作成する超簡単なプログラム\r\n- Pythonプログラミングの基本中の基本!forループによる繰り返しの作り方\r\n- …

てな感じになるはずです。

てことは、先ほどのforループを使った処理は…以下のようにするとよさそうです。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for line in lines:
    text = text + '- ' + line + '\r\n'
print(text)

空の文字列が入った変数textを用意して、forループでリストから要素を一つずつ取り出すのですが、その冒頭に「- 」、末尾に「\r\n」を挿入します。

では、結果を見てみましょう。

Pythonでリストの要素の冒頭にハイフンと半角スペースを追加

いいですね。望み通りの結果になっていそうです。

pyperclip.copy関数でクリップボードへコピーする

では、いよいよこのデータをクリップボードへコピーして戻しましょう。

pyperclip.copy関数を使います。

書き方はこちら。

pyperclip.copy(text)

これで引数textに指定した文字列をクリップボードへコピーしてくれます。

プログラムは以下になります。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for line in lines:
    text = text + '- ' + line + '\r\n'
pyperclip.copy(text)

こちらを実行して、クリップボードの内容をテキストファイルに貼り付けてみますと…

Pythonで加工したデータをクリップボードから貼り付け

バッチリMarkdownのリスト形式になっています。

まとめ

初心者向けのPythonでクリップボードを操作、今回はデータを加工してクリップボードへコピーをする方法でした。

pyperclipモジュールには

  • クリップボードのデータをテキストとして取得するpaste関数
  • 指定したテキストをクリップボードにコピーするcopy関数

の2つの関数しかありません。

使い方シンプルでよいですね。

さて、次回はこの応用でクリップボードの内容を番号付きリストに変換してみたいと思います。

Pythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法
Pythonで初心者でも簡単にできるクリックボードを使ったツールの作り方をお伝えしています。今回はPythonのリストのforループで要素とともにインデックス番号も取り出す方法についてお伝えします。

どうぞお楽しみに!

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

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

タイトルとURLをコピーしました