毎日ちょっとPython ~11日目~
文字列編は今日で終われるかしら。
rjust(),ljust(),center() メソッド
第1引数 - 何文字の間でそろえるのか
第2引数 - 空いている分をどのように埋めるのか(デフォルトはスペース)
>>> 'Hello'.rjust(10)
' Hello'
>>> 'Hello'.rjust(20)
' Hello'
>>> 'Hello World'.rjust(20)
' Hello World'
>>> 'Hello'.ljust(10)
'Hello '
>>> 'Hello'.rjust(20,"*")
'***************Hello'
>>> 'Hello'.ljust(20,"-")
'Hello---------------'
>>> 'Hello'.center(20)
' Hello '
>>> 'Hello'.center(20,"=")
'=======Hello========'
表形式のデータを正しくスペースを空けて表示したいときに便利だそう。
def print_picnic(items_dict,left_width,right_width):
print('PICNIC ITEMS'.center(left_width + right_width, '-'))
for k,v in items_dict.items():
print(k.ljust(left_width,'.') + str(v).rjust(right_width))
picnic_items = {'sandwiches':4,'apples':12,'cups':4,'cookies':8000}
print_picnic(picnic_items,12,5)
print_picnic(picnic_items,20,6)
こんなコードになりました。ただ実行した感じがものすごくきれいで、テンション若干上がった。
---PICNIC ITEMS--
sandwiches.. 4
apples...... 12
cups........ 4
cookies..... 8000
-------PICNIC ITEMS-------
sandwiches.......... 4
apples.............. 12
cups................ 4
cookies............. 8000
めっちゃよくないこれ。気持ちよかったー。やっぱり何に使うんだろうというのは実際に見せてわからせたほうがいいね。
strip(),rstrip()lstrip()で空白を除去する
文字列の両端(左 or 右)から空白を除去するためのやつです。
>>> spam = ' Hello world '
>>> spam.strip()
'Hello world'
>>> spam.rstrip()
' Hello world'
>>> spam.lstrip()
'Hello world '
んで、オプションに文字列渡すと削除ができるらしい。たとえば以下の場合だと小文字の a,m,p と大文字の Sで挟まれているときに削除してくれます。
>>> spam = 'SpamSpamSpamSpamBaconSpamEggsSpamSpamSpamSpam'
>>> spam.strip('ampS')
'BaconSpamEggs'
pyperclipモジュールで文字列をコピペ!
pyperclipモジュールには、copy()とpaste()という関数があり、コンピュータのクリップボードとテキストを授受することができるらしい!
が、ここで問題、このモジュールはサードパーティーが作成したものでPythonをインストールしただけではだめらしい。ので、外部からインストールするらしいその手順は末尾で記述します。
import pyperclip
pyperclip.copy('Hello world!')
pyperclip.paste()
サードパーティーのモジュールをインストールする
サードパーティーのモジュールをインストールする方法は、Pythonのpipツールを使うことで可能らしい。
ただ、インストールにはSSLを入れなくちゃいけないっぽくその対応をしました。
単純に入力しただけだとこんなエラーが出ます。
pip install pyperclip
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pyperclip/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pyperclip/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pyperclip/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pyperclip/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/pyperclip/
Could not fetch URL https://pypi.org/simple/pyperclip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pyperclip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
ERROR: Could not find a version that satisfies the requirement pyperclip (from versions: none)
ERROR: No matching distribution found for pyperclip
そういえばと思い、OpenSSLを導入。
こちらの記事を参考にしました。
がしかし、openssl.cfg が存在しないかつ作れなくてさぁどうしたものかと思い以下を試しました。
Anacondaを立ち上げて、CMD.exe Prompt からプロンプトを立ち上げ。
サクッと通りました。これでVSCodeで使えるのかを試します。VSCodeはだめでした。見ているものが違うのかしら。
Anaconda側でVS Codeを起動させて実行させたら通りました。
実行できたものとできなかったものを比べるとどうやら実行するためのPythonのバージョンとかどこを参照しながら、プログラムを解釈(?)するのかが違うために起こっているのかなと思います。
この辺詳しい人本当に教えて...(モヤモヤが止まらない)
あとこのバージョンが書かれている部分をクリックして、どのバージョンで実行するかみたいなものが出てきたのでこれも駆使していこうと思います。
最後に
なんか関係ないところでつまづいて進まなかった。明日ちゃんと進められたらなと思う。終わり。