回答編集履歴

1

追記

2018/12/21 08:48

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1 +1,65 @@
1
+ そもそもJSON形式じゃないですね、それ。[JSON の紹介](https://www.json.org/json-ja.html)
2
+
3
+ 正しい形式で記述されていれば、リストもちゃんと読み込めます。
4
+
5
+ ```Python
6
+
7
+ import json
8
+
9
+
10
+
11
+ src = '["value1", "value2", "value3"]'
12
+
13
+ print(json.loads(src)) # ok
14
+
15
+
16
+
17
+ src = "['value1', 'value2', 'value3']"
18
+
19
+ print(json.loads(src)) # ng
20
+
21
+ ```
22
+
23
+
24
+
25
+ **実行結果** [Wandbox](https://wandbox.org/permlink/zQ9ZmidFFgZdlhgW)
26
+
27
+ ```
28
+
29
+ ['value1', 'value2', 'value3']
30
+
31
+ Traceback (most recent call last):
32
+
33
+ File "prog.py", line 7, in <module>
34
+
35
+ print(json.loads(src))
36
+
37
+ ...
38
+
39
+ json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
40
+
41
+ ```
42
+
43
+
44
+
45
+ ---
46
+
1
- [ast.literal_eval](https://docs.python.jp/3/library/ast.html#ast.literal_eval)が使えます。
47
+ Pythonのリテラルの形式で書かれた文字列をロードしたい場合は、[ast.literal_eval](https://docs.python.jp/3/library/ast.html#ast.literal_eval)が使えます。
48
+
49
+ ```Python
50
+
51
+ import ast
52
+
53
+
54
+
55
+ src = '["value1", "value2", "value3"]'
56
+
57
+ print(ast.literal_eval(src)) # ok
58
+
59
+
60
+
61
+ src = "['value1', 'value2', 'value3']"
62
+
63
+ print(ast.literal_eval(src)) # ok
64
+
65
+ ```