2016-08-02 15 views
0

Pythonの辞書は、このような形式である:値のペア:Pythonの辞書

'{"a":1, "b":2, "c":3}' 

通知は、異なるキーを分離するために、カンマを使用します。

問題は、私はあまりにもコンマで別々の列にあるCSVファイルを、持っている:

' 
    "id", "gender", "age", "name" 
"001",  "male", "14", "{"first":"Mike", "last":"Green"}" 
"002", "female", "15", "{"first":"Kate", "last":"Spear"}" 
' 

私は私が得た
pandas.read_csv('csvfile.csv', sep = ',', names=["id", "gender", "age", "name"])

行うと:

' 
    "id", "gender", "age", "name" 
"001",  "male", "14", "{"first":"Mike" 
"002", "female", "15", "{"first":"Kate" 
' 

理由私はcsvファイルの区切り文字として、CSVの読者は、コンマがdictのファーストネームに従っていると考えています。私は "" id "、" gender "、" age "、" name ""という4つの列しか指定しなかったので、姓は無視されます。

これについての考えや解決方法はありますか?ありがとう!

+2

最初にそのファイルをどのように作成しましたか?引用はむしろ役に立たない。 –

+0

はい私は彼らも役に立たないと思います。このデータセットは他の人によって生成されます。私がそれをしたのであれば、そのフィールドではpython dictを使用したくないでしょう。今、問題はここにあります、私はこれに基づいていくつかの仕事をしようとしています。 –

+0

残念ながら、 'pandas.read_csv()'は、受け入れ可能な入力ファイルを構成するものについてもう少し要求しています。 '' python''エンジンはイテレータを受け取りますが、それが 'csv.reader()'オブジェクトであると期待しています。今は時間外です。 –

答えて

0

read_csvが使用する区切り文字を変更することができます。あなたが列を分離するためのセミコロンを使用するためにCSVファイルを変更することができた場合は、その後、別の方法として、あなたが

"001",  "male", "14", "{"first":"Mike", "last":"Green"}" 

もちろん

"001",  "male", "14", "{'first':'Mike', 'last':'Green'}" 

に両方の方法から引用を修正することができます read_csv(file.csv, sep=';'...)

を使用することができますcsvファイルの編集を意味します。

2番目のサウンダが見えます。正規表現(\{[^"]*)(")([^}]*\})を使用して中括弧内の引用符を一致させることができます。 (未テスト)