teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/08/31 00:07

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
File without changes

1

追記

2019/08/31 00:07

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -1,12 +1,19 @@
1
1
  `dict`関数では文字列を辞書化することはできません。
2
2
  正規表現を使ってパースすることで以下のように辞書化できます。
3
3
  ```Python
4
- import re
5
-
6
4
  tes = "__cd='d40000', ipip='2769419', dhash='3925fd', ss='dzze', eve='15671'"
7
5
 
8
- l = re.findall( r"(.+?)\='(.*?)'\s*,*", tes)
6
+ l = re.findall( r"(.+?)\=\s*'(.*?)'\s*,*", tes)
9
7
 
10
8
  ret = {v[0].strip():v[1] for v in l}
11
9
  print(ret) # {'__cd': 'd40000', 'ipip': '2769419', 'dhash': '3925fd', 'ss': 'dzze', 'eve': '15671'}
10
+ ```
11
+ ### 追記
12
+
13
+ なお、辞書のキーと値を変数とその値として定義するには以下のようにすればよいです。
14
+ 参考:[convert dictionary entries into variables - python](https://stackoverflow.com/questions/18090672/convert-dictionary-entries-into-variables-python)
15
+ ```Python
16
+ # 辞書→変数に
17
+ locals().update(ret)
18
+ print(__cd) # d40000
12
19
  ```