我知道這個問題已經被問過,但從未有以下注意事項:轉換修改JSON到CSV使用python
- 我是一個完整的Python的n00b。還有一個JSON noob。
- JSON文件/字符串與json2csv示例中顯示的不一樣。
- CSV文件輸出應該有標準列。
由於第一點,我不知道用於此的大多數術語和技術。所以請耐心等待。
點號2:這裏的應該 JSON文件的一行:
"id":"123456","about":"YESH","can_post":true,"category":"Community","checkins":0,"description":"OLE!","has_added_app":false,"is_community_page":false,"is_published":true,"likes":48,"link":"www.fake.com","name":"Test Name","parking":{"lot":0,"street":0,"valet":0},"talking_about_count":0,"website":"www.fake.com/blog","were_here_count":0^
奇怪,我知道 - 它缺乏支撐和支架之類的東西。這就是爲什麼我確信發佈的解決方案不起作用。
我不確定線末端的0 ^是什麼,但我在每一行的末尾看到它。我假設0是「are_here_count」的值,而^是行終止符?編輯:顯然,我可以忽略它。
值得注意的是,「停車」的價值似乎是另一個數組 - 我很好,只是顯示它(減去雙引號)。
點數3:以下是所需CSV文件輸出的列。這是完整的列集--JSON文件並不總是全部包含它們。
ID STRING,
ABOUT STRING,
ATTIRE STRING,
BAND_MEMBERS STRING,
BEST_PAGE STRING,
BIRTHDAY STRING,
BOOKING_AGENT STRING,
CAN_POST STRING,
CATEGORY STRING,
CATEGORY_LIST STRING,
CHECKINS STRING,
COMPANY_OVERVIEW STRING,
COVER STRING,
CONTEXT STRING,
CURRENT_LOCATION STRING,
DESCRIPTION STRING,
DIRECTED_BY STRING,
FOUNDED STRING,
GENERAL_INFO STRING,
GENERAL_MANAGER STRING,
GLOBAL_BRAND_PARENT_PAGE STRING,
HOMETOWN STRING,
HOURS STRING,
IS_PERMANENTLY_CLOSED STRING,
IS_PUBLISHED STRING,
IS_UNCLAIMED STRING,
LIKES STRING,
LINK STRING,
LOCATION STRING,
MISSION STRING,
NAME STRING,
PARKING STRING,
PHONE STRING,
PRESS_CONTACT STRING,
PRICE_RANGE STRING,
PRODUCTS STRING,
RESTAURANT_SERVICES STRING,
RESTAURANT_SPECIALTIES STRING,
TALKING_ABOUT_COUNT STRING,
USERNAME STRING,
WEBSITE STRING,
WERE_HERE_COUNT STRING
這裏是我到目前爲止的代碼:
import os
num = '1'
inPath = "./fb-data_input/"
outPath = "./fb-data_output/"
#Get list of Files, put them in filenameList array
fileNameList = os.listdir(path)
#Process per file in
for item in fileNameList:
print("Processing: " + item)
fb_inputFile = open(inPath + item, "rb").read().split("\n")
fb_outputFile = open(outPath + "fbdata-IAB-output" + num, "wb")
num++
jsonString = fb_inputFile.split("\",\"")
jsonField = jsonString[0]
jsonValue = jsonString[1]
jsonHash[?] = [?,?]
#Do Code stuff here
直到for循環,它只是用來加載JSON文件名到一個數組,然後處理它一個接一個。
這裏是我的代碼的其餘部分的邏輯:
- 分割的東西JSON字符串。也許這個「,」使其他逗號不會分裂。
- 將它存儲到hashmap/2D數組(動態?)
- 修剪掉JSON字段和第一個和/或最後一個雙引號。
- 將生成的輸出添加到另一個散列映射,使用那些設置的列,將空值放入JSON文件不具有的列中。
然後我輸出結果到CSV。
這聽起來很符合我的想法,但我敢肯定,我錯過了一些東西。當然,我很難把它放在代碼中。
我可以幫忙嗎?謝謝。
P.S.
其他信息:
- 操作系統:Mac OSX
- 目標平臺操作系統:某種Ubuntu的
JSON文件的行是否對應於單個數據記錄? –
「停車」:{「lot」:0,「street」:0,「valet」:0}如何映射到CSV的'PARKING'列? –
行尾末尾的'^'字符表示什麼? –