【保存版】Pythonの文字変換（半角,全角,小文字,大文字）

職場でデータベースから購買データを取ってくる時に、

「何パターンもわざわざ商品名を考えるのが面倒過ぎる！」

という事から、データベースから購買データを取ってくるアプリを作成している過程でメモった、文字変換についての一覧をまとめました！

# 事前準備
Pythonの標準搭載のライブラリでも変換は幾つかできるのですが、

* 「ひらがな」から「カタカナ」
*  半角・全角の相互変換

の部分については変換できないため、今回は文字変換に**jaconv**というパッケージを使いました。

先に下記のコードでインストールしておきましょう。

```
pip install jaconv
```

詳しい仕様方法は下記より参照。
https://pypi.org/project/jaconv/

# 変換コード
```python:入力宣言
hira = "もんすたーえなじー2"
romaji = "mondter energy２"
```
半角と全角が混ざるように、

* ひらがなには**半角数字**
* ローマ字には**全角数字**

を付けて検証しています。

<br>
【補足】
下記の方法でオプション追加

* kana=True or False
* digit=True or False
* ascii=True or False

kana=カタカナを変換対象に含めるか
digit=数字を変換対象に含めるか
ascii=英字・記号を変換対象に含めるか

## ひらがな
```python:ひらがな
#「ひらがな」以外半角
print(jaconv.z2h(hira,digit=True, ascii=True))  #=> もんすたｰえなじｰ2
#「ひらがな」以外全角
print(jaconv.h2z(hira,digit=True, ascii=True))  #=> もんすたーえなじー２
```

## カタカナ
```python:カタカナ
#【変数格納】「ひらがな」 ⇒ 「カタカナ」
kata = jaconv.hira2hkata(hira)

#「ひらがな」だけを「カタカナ」に
print(jaconv.hira2kata(hira))  #=> モンスターエナジー2
#「カタカナ」以外の半角
print(jaconv.z2h(kata,digit=True, ascii=True))  #=> ﾓﾝｽﾀｰｴﾅｼﾞｰ2
#「カタカナ」以外の全角
print(jaconv.h2z(kata,digit=True, ascii=True))  #=> モンスターエナジー２
```

## ローマ字
### 【ローマ字のみ】小文字・大文字操作
```python:小文字・大文字操作
#全て小文字
print(romaji.lower())  #=> monster energy２
#全て大文字
print(romaji.upper())  #=> MONSTER ENERGY２
#１文字目大文字
print(romaji.capitalize())  #=> Monster energy２
#単語頭大文字
print(romaji.title())  #=> Monster Energy２
```

### 【半角】小文字・大文字操作
```python:【半角】小文字・大文字操作
#全て小文字
print(jaconv.z2h(romaji,digit=True,ascii=True))  #=> monster energy2
#全て大文字
print(jaconv.z2h(romaji.upper(),digit=True,ascii=True))  #=> MONSTER ENERGY2
#１文字目大文字
print(jaconv.z2h(romaji.capitalize(),digit=True,ascii=True))  #=> Monster energy2
#単語頭大文字
print(jaconv.z2h(romaji.title(),digit=True,ascii=True))  #=> Monster Energy2
```

### 【全角】小文字・大文字操作
```python:【全角】小文字・大文字操作
#全て小文字
print(jaconv.h2z(romaji,digit=True,ascii=True))  #=> ｍｏｎｓｔｅｒ　ｅｎｅｒｇｙ２
#全て大文字
print(jaconv.h2z(romaji.upper(),digit=True,ascii=True))  #=> ＭＯＮＳＴＥＲ　ＥＮＥＲＧＹ２
#１文字目大文字
print(jaconv.h2z(romaji.capitalize(),digit=True,ascii=True))  #=> Ｍｏｎｓｔｅｒ　ｅｎｅｒｇｙ２
#単語頭大文字
print(jaconv.h2z(romaji.title(),digit=True,ascii=True))  #=> Ｍｏｎｓｔｅｒ　Ｅｎｅｒｇｙ２
```

# まとめ
解説を入れて見づらくなってしまったため、まとめて書きました。
このままコピペしても使えるので、色々な文字列で変換を試してみて下さい。


```python:文字変換まとめ
import jaconv

hira = "もんすたーえなじー2"
romaji = "mondter energy２"
kata = jaconv.hira2hkata(hira)

print(jaconv.z2h(hira,digit=True, ascii=True))  #=> もんすたｰえなじｰ2
print(jaconv.h2z(hira,digit=True, ascii=True))  #=> もんすたーえなじー２

print(jaconv.hira2kata(hira))  #=> モンスターエナジー2
print(jaconv.z2h(kata,digit=True, ascii=True))  #=> ﾓﾝｽﾀｰｴﾅｼﾞｰ2
print(jaconv.h2z(kata,digit=True, ascii=True))  #=> モンスターエナジー２

print(romaji.lower())  #=> monster energy２
print(romaji.upper())  #=> MONSTER ENERGY２
print(romaji.capitalize())  #=> Monster energy２
print(romaji.title())  #=> Monster Energy２

print(jaconv.z2h(romaji,digit=True,ascii=True))  #=> monster energy2
print(jaconv.z2h(romaji.upper(),digit=True,ascii=True))  #=> MONSTER ENERGY2
print(jaconv.z2h(romaji.capitalize(),digit=True,ascii=True))  #=> Monster energy2
print(jaconv.z2h(romaji.title(),digit=True,ascii=True))  #=> Monster Energy2

print(jaconv.h2z(romaji,digit=True,ascii=True))  #=> ｍｏｎｓｔｅｒ　ｅｎｅｒｇｙ２
print(jaconv.h2z(romaji.upper(),digit=True,ascii=True))  #=> ＭＯＮＳＴＥＲ　ＥＮＥＲＧＹ２
print(jaconv.h2z(romaji.capitalize(),digit=True,ascii=True))  #=> Ｍｏｎｓｔｅｒ　ｅｎｅｒｇｙ２
print(jaconv.h2z(romaji.title(),digit=True,ascii=True))  #=> Ｍｏｎｓｔｅｒ　Ｅｎｅｒｇｙ２
```