便利なモジュールや関数

#目次

[文字列をコピー＆ペーストする](#文字列をコピー＆ペーストする)
[正規表現を扱う](#正規表現を扱う)
[ファイル操作](#ファイル操作)
[random関連](#random関連)


##文字列をコピー＆ペーストする
###pyperclipモジュール
**別ウィンドウでクリップボードに張り付けた文字列（URLやファイルパスやwebページの内容などなんでも）を変数に入れ、処理を行い再びクリップボードに張り付けたりできる**

```python.py
import pyperclip

pyperclip.copy('Hello world!')    #クリップボードにコピーする 
pyperclip.paste()                 # クリップボードの内容を出力する
```

```result.
'Hello world!'
```

##正規表現を扱う
###reモジュール
**基本的な流れは**
**1. re.compile()でマッチさせる正規表現を指定し、Rejexオブジェクトを生成する**
**2. Rejexオブジェクトのsearch()メソッドなどに検索対象文字列を渡すことで検索を行い、Matchオブジェクトを返す**
**3. Matchオブジェクトのgroup()メソッドなどで、実際にマッチした文字列を取得する**

詳しくは以下参照：[pythonの正規表現](https://qiita.com/mcla/items/02fc249a18eb623bf100)

```python.py
import re

phone_num_regex=re.compile(r'\d{3}-\d{3}-\d{4}')
mo = phone_num_regex.search('私の電話番号は415-555-4242です。')
mo.group()
```

```result.
'415-555-4242'
```

##ファイル操作
###osモジュール
**パス操作およびファイルの読み書き**
詳しくは以下参照：[ファイルの読み書き](https://qiita.com/mcla/items/576cadfd934506c09357)

****

##プログラム中の変数を保存する
###shelveモジュール
Pythonプログラム中の変数を、シェルフ（棚）というバイナリファイルとして保存でき、後で変数に復元できる。

**プレーンテキストはメモ帳やテキストエディタで読めるファイルを作るのに便利だが、Pythonプログラムからデータを保存したいときにはshelveモジュールが便利**

シェルフの値は辞書のように変更することが可能。
####保存

```python.py
import shelve

shelf_file = shelve.open('mydata')     # ファイル名を渡して呼び出し、シェルフオブジェクトを格納
cats = ['Zophie', 'Pooka', 'Simon']
shelf_file['cats'] = cats    # 'cats'というキーに対応した値として、リストcatsの内容を入れる
shelf_file.close()
```
※Windowsの場合、カレントディレクトリに、mydata.bak、mydata.data、mydata.dirの3つのファイルが作られる。

####取り出す

```python.py
shelf_file = shelve.open('mydata')
print(type(shelf_file))
print(shelf_file['cats'])
shelf_file.close()
```

```result.
<class 'shelve.DbfilenameShelf'>
['Zophie', 'Pooka', 'Simon']
```

**辞書と同様にシェルフにもkeys()とvalues()メソッドがあるが、これは真のリストではなくリスト風のオブジェクトなので、真のリストが必要な場合はlist()関数に渡す必要がある**

```python.py
shelf_file = shelve.open('mydata')
print(shelf_file.keys())
print(list(shelf_file.keys()))
print(shelf_file.values())
print(list(shelf_file.values()))
shelf_file.close()
```

```result.
KeysView(<shelve.DbfilenameShelf object at 0x0080C358>)
['cats']
ValuesView(<shelve.DbfilenameShelf object at 0x0080C358>)
[['Zophie', 'Pooka', 'Simon']]
```

###pprintモジュールのpformat()関数

※ほとんどの場合、shelveモジュールを使うほうが便利

**pprint.pformat()関数は、整形した文字列を返す。整形された文字列は読みやすいだけでなく、Pythonのコードとして文法的に正しい状態になっている（.pyファイルに書き込める）。**
このファイルは独自のモジュールとしてインポートすることで、その中に保存された変数を使用可能

####

```python.py
import pprint

cats = [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]
pprint.pformat(cats)
file_obj = open('myCats.py', 'w')
file_obj.write('cats = ' + pprint.pformat(cats))
file_obj.close()
```

##random関連
###randomモジュール

####リストの並びをランダムにする

```python.py
import random

prefectures = ['山形県', '福島県', '茨城県', '栃木県', '北海道', '宮城県', '青森県', '秋田県', '岩手県']
random.shuffle(prefectures)
print(prefectures)
```

```result.
['宮城県', '山形県', '北海道', '栃木県', '秋田県', '岩手県', '茨城県', '青森県', '福島県']
```

####リストからランダムに要素を取り出す

```python.py
random_list = random.sample(prefectures, 3)
print(random_list)
```

```result.
['茨城県', '岩手県', '秋田県']
```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```

####

```python.py

```

```result.

```