💡
【Python】スネークケースとキャメルケースの変換
背景
バックエンド: Python
フロントエンド: Vue.js
での開発のなかで、json形式のデータの受け渡しを行う場面がありました。
Pythonではjsonのキーをスネークケース、Vue.jsではキャメルケースで使用したいなと思ったのがきっかけで、各方向で変換できるメソッドを作成したので共有です。
スネークケース→キャメルケース
import re
''''
dict = {'snake_case': True, 'camel_case': False }
↓
dict = {'snakeCase': True, 'camelCase': False }
'''
# dictのkeyをスネークケースからキャメルケースに変換する
def convert_camel(dict):
keys = dict.copy().keys()
for key in keys:
value = dict[key]
del dict[key]
camel_key = re.sub("_(.)",lambda x:x.group(1).upper(),key)
dict[camel_key] = value
return dict
キャメルケース→スネークケース
import re
''''
dict = {'snakeCase': False, 'camelCase': True }
↓
dict = {'snake_case': False, 'camel_case': True }
'''
# dictのkeyをキャメルケースからスネークケースに変換する
def convert_snake(dict):
keys = dict.copy().keys()
for key in keys:
value = dict[key]
del dict[key]
camel_key = re.sub("([A-Z])",lambda x:"_" + x.group(1).lower(),key)
dict[camel_key] = value
return dict
気をつけたこと
いずれもkeys = dict.copy().keys()
で値渡しにしてあげるのコツです。
(参照渡しだと変換した後のjsonからをkeysを再び取得して、for文の中でまた変換処理を始めてしまうため)
Discussion