2016-01-13 53 views
0
JSON

嘿,所以我像一個CSV文件中的一些散IDSCSV在Python

XbRPhe65YbC + xtgGQ8ukeZEr9xFOC4MEs9Z0wUidGSec = XbRPhe65YbC + xtgGQ8uksrqSUJ/HhTPj1d2pL0/vuGrHM =

,我想他們解析爲蟒蛇包他們在一些額外的代碼等

{ 「ID」: 「+ XbRPshe65YbC xtGQ8ukqR2u2btfNeNe2gtcs72QbxPA =」, 「時間戳」: 「20150831」},

,然後包裝所有的是,在一些JSON語法。然後將其作爲發佈請求發送。問題是我似乎無法使JSON可讀。一切似乎都是錯誤的,我正在額外購買\。

import os 
import pandas as pd 
from pprint import pprint 

df=pd.read_csv('test.csv',sep=',',header=None) 
df[0] = '{"id" :"' + df[0].astype(str) + '", "timestamp":"20150831"}, ' 

df = df[:-1] # removes last comma 


test = 'hello' 
data =[ { "ids":[ df[0]], 
      "attributes":[ 
       { 
       "name":"girl" 
       }, 
       { 
       "name":"size" 
       } 
       ] 
     } 
     ] 

json1 = data.to_json() 
print(json1) 
+1

你有沒有考慮過使用'csv'和'json'模塊來做到這一點?熊貓看起來對你在這裏做的事情有點矯枉過正,'json'可以讓你在輸出中很好地格式化事物。 – JCVanHamme

+0

你能舉個例子嗎? – tosh

+0

如何鏈接到模塊,而不是... [csv](https://docs.python.org/2/library/csv.html)和[json](https://docs.python.org/2/ library/json.html) – MrHug

回答

2

我同意熊貓似乎並不是這裏工作最簡單的工具。內置的庫會很好用:

import csv 
import json 

with open('test.csv', newline='') as csvfile: 
    csvreader = csv.reader(csvfile) 

    data = { 
     "ids": [{"id": row[0], "timestamp": "20150831"} for row in csvreader], 
     "attributes": [ 
      {"name": "girl"}, 
      {"name": "size"} 
     ] 
    } 

json1 = json.dumps(data) 
print(json1) 
+0

您沒有正確縮進您的代碼。它正在提高'ValueError'。 – xyres

+0

感謝彼得,雖然現在我得到了ValueError:關閉文件的I/O操作。從一個快速的谷歌看起來像它不喜歡的縮進。有什麼想法嗎? – tosh

+0

@tosh,問題在於'data'的定義應該落在'with'塊之下(縮進這些行以匹配'csvreader = ...'行)。另外,如果您將調用更改爲'json.dumps'來讀取'json1 = json.dumps(data,indent = 4)',它將會使用縮進來打印json。最後,你可能想要添加一個檢查列表的理解,以確保行不是空的,否則你會索引超出範圍。 – JCVanHamme