2017-02-05 28 views
0

を入力するタイプの列strからリストを変換する:それは簡単でなければなりませんが、私はそれを知っていないリスト

私はこのコンテンツ

[{u'key': u'value1'},{u'key': u'value2'}] 

file.jsonを持っているし、 data

with open(file.json) as fd: 
     data = fd.read() 

として、それをインポートし、私はこれが機能することは非常にうれしいです

>>> print (data) 
[{u'key': u'value1'},{u'key': u'value2'}] 

しかし残念ながらdataは今だから私は、項目の削除のようなものを行うためにdataを使用することはできませんstr

>>> print(type(data)) 
<type 'str'> 

として変換されます。

dataを通常のdictsリストに変換するにはどうすればよいですか? (<type 'list'>

+3

ファイルがJSONデータであることを考えれば、[jsonモジュール](https://docs.python.org/3/library/)を使用してください。 json.html)? – jonrsharpe

+3

これはJSONではありません。どこでそれを手に入れたのですか? –

答えて

3

ファイルメソッド.read()を使用すると、常に文字列が取得されます。あなた自身で解析する必要がありますが、幸いにも、Pythonにはすべての解析を行うjson moduleがあります。ステファンが指摘したように、あなたのファイルは有効なJSONではありません、

import json 
with open(file.json) as fd: 
    data = json.load(fd) 

しかし - それは、むしろPythonオブジェクトのrepr()出力のようになります。それも、ファイルを読み込みます。その場合はほぼ同じです:

import ast 
with open(file.json) as fd: 
    data = ast.literal_eval(fd.read()) 
+1

データを試しましたか?彼らのデータは有効なJSONではないので、私にとってはうまくいかない。 –

+0

@StefanPochmann:確かに、それは有効なJSONではありません。気づいてくれてありがとう。 –

+0

@Stefanあなたはおそらく正しいでしょう。OPは文字列としてファイルをオープンし、それを(JSONではなく文字列として)出力したので、ユニコードマーカーはファイル –

1

jsonライブラリでは非常に簡単です。

import json 
obj = json.loads(json_string) 

デシリアライズjson_string(我々の場合でdixt)Pythonオブジェクトへの(json_stringは、JSON文書を含むSTRまたはUnicodeインスタンスです)。

EDIT:ステファンが言及したよう

、これは有効なJSON(それはリストのように見える)ではないので、あなたがティムの答えを見ることができます。

+1

ファイルを直接読み込むことができます。文字列の必要はありません –

+1

あなたは正しいですが、Timはすでにこの回答を書いていますので、私は彼の答えを複製したくありません。 @ cricket_007 –

+0

あなたは文字列で試しましたか?彼らのデータは有効なJSONではないので、私にとってはうまくいかない。 –

関連する問題