我知道这个问题已经被问过,但从未有以下注意事项:转换修改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'列? –
行尾末尾的'^'字符表示什么? –