昼休みや通勤・通学時間帯でも速度低下しにくい格安回線(MVNO)特集
 (遅い格安SIMに削られる時間を仕事にあてたら、いくら得するだろう・・・・)

■期間限定ポイントの消化にいかが? ・ギフト券店(楽天)

空きスペースを駐車場などでレンタルして小遣い稼ぎ

■お得な招待コード or 招待ページ
メルカリ:FEKMZK、ポイントサイト モッピーアメフリげん玉げっとま

免責:本記事により生じた損失について記述者は一切の責任を持てませんので、その程度の内容としてご活用下さい。出所が怪しいネット情報は新規の着眼点を得るために使うべきで、興味を持った場合は信頼できる情報源で検証して下さい。さらに、その検証結果を公開してもらえると有り難いです。なお不具合の注意喚起は公衆の不利益回避のためであって、他者を攻撃するためではありません。
本記事にはCM等の事業者の表示が含まれます。
下は売れ筋上位の医薬品で通常はコンタクトレンズが上位独占ですが、世相を反映して新型コロナウイルス騒動以降はマスクが上位独占。その後は消毒液や酸素飽和度測定器、非接触体温計なども出現。詳しい記事はこちら。

2020年6月14日日曜日

Pythonでクリップボードの内容(改行有り)が思うように取得できない場合の対処方法と意外な事実 @トラブル対処 @情報学 @python @R言語

import pandas as pd
sss = pd.read_clipboard(header=None, sep='\n')

で列名(フィールド名) が「0」の列に格納されたデータフレームsssを得られます。


行頭と行末の単独or連続した空白を消して取得したい場合は「sep=」の部分を書き換えて
sss = pd.read_clipboard(header=None, sep=r'\n')
とします。
windowsでは「sep='\r\n'」としなければ行けなそうですが、上記で行けました。
windows、linux、macでの改行コードの違いが気になる場合は「sep='\r\n|\n|\r'」とする必要が有りそうですが、上記で行けるかもしれません。この場合も行の最初と最後の単独or連続の空白は問答無用で消されます。

Webサイトによっては、pd.read_clipboard()使用時に、エクセルからコピーする際は文字化けするので、sep="\n" の他に encoding="shift_jis" を加えるべき、としている説明も有りますが、私のwindwos8.1、Excel2007環境では不要でした。pandasのバージョンアップによるものでしょうか?

クリップボードの内容取得ぐらい、Pandasに頼らなくともpythonのデフォルトで備えていてほしいものです。ちなみにデータ分析用のR言語では、下の記事の様にデフォルトでしかも一行でクリップボードの中身を取得できます。
統計用のR言語でクリップボードの中身を読み込む時に「 scan() 関数は 'a real' を期待したのに」とエラーが出る時の対処法 @情報学 @トラブル対処


下に続く・・・
スポンサードリンク

■■■クリップボードの中身を文字列として得る方法■■■

私の様に、改行ごと一気に正規表現で処理したい場合、次のコードで改行付き文字列 ssstr を得ます。2行目までは上記と同じです。

import pandas as pd
sss = pd.read_clipboard(header=None, sep='\n')
ssstr=""
for jjj in range(0, sss.shape[0]): #https://techacademy.jp/magazine/17697
  ssstr += sss[0][jjj] + "\n"

■■■ 余談(意外な事実) ■■■
クリップボードの操作では「Pyperclip」も有名なのですが、なるべくインストールする回数は減らして悪意あるコードが紛れ込むリスクを減らそうと、今回はpandasを利用しました。

しかし・・・・・pandasがwindowsのクリップボードを操作する原理を知りたくてpandasのコードを解析したところ、意外な事実が発覚。

ファイルパスが「anaconda3\lib\site-packages\pandas\io\clipboard\__init__.py」のコードによると、pandasはどうやら内部でPyperclipを使用しているらしいです。結局 Pyperclip を使っているんかい。

そのPyperclipはコードを斜め読みする限り、 ctypes 関数などでwindows APIにアクセスしてクリップボードを操作しているらしいです。

なお、コードのコメントを見ると、以下のWebページを参考にしているらしいです。
http://msdn.com/ms649016
と言ってもアクセス後に強制的に下のURLに飛ばされます。
https://docs.microsoft.com/ja-jp/windows/win32/dataxchg/using-the-clipboard?redirectedfrom=MSDN


(コメントされる場合はコメントの最初にjjjjと入れて下さい。無い場合はスパムとみなされてしまいます。 English comments will be welcomed. If you have any comments, please write 'jjjj' at first of your comments OR spam filters will delete your comments.)

スポンサードリンク

0 件のコメント:

コメントを投稿