使用python将json转换为csv
Posted
技术标签:
【中文标题】使用python将json转换为csv【英文标题】:convert json to csv with python 【发布时间】:2018-01-04 10:18:08 【问题描述】:我有一些非常大的 json 文件需要转换(最大的是 500 mb)。在线工具只支持小尺寸,不适合我。所以我查看了 *** 来寻找可能对我有用的脚本。找到了这个:
import csv
import json
infile = open("test_user.json","r")
outfile = open ("test_user.csv","w")
writer = csv.writer(outfile)
for row in infile:
data = json.loads(row)
writer.writerow(data)
这是我的 json 文件之一的链接:https://pastebin.com/xpzeJmug
[
"contributors": null,
"truncated": false,
"text": "",
"in_reply_to_status_id": null,
"id": 433266666479562750,
"favorite_count": 0,
"source": "<a href=\"http://www.apple.com\" rel=\"nofollow\">ios</a>",
"retweeted": false,
"coordinates": null,
"entities":
"symbols": [],
"user_mentions": [],
"hashtags": [
"indices": [
38,
43
],
"text": "IMDb"
],
"urls": [
"url": "http://tw.co/LTiHcO3XH2",
"indices": [
44,
66
],
"expanded_url": "http://www.imdb.com/title/tt0993846",
"display_url": "imdb.com/title/tt0993846"
]
,
"in_reply_to_screen_name": null,
"in_reply_to_user_id": null,
"retweet_count": 0,
"id_str": "433266666479562753",
"favorited": false,
"user":
"follow_request_sent": false,
"profile_use_background_image": true,
"id": 182591357,
"verified": false,
"profile_text_color": "333333",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/430409335710416897/pwV3muOK_normal.jpeg",
"profile_sidebar_fill_color": "DDEEF6",
"is_translator": false,
"geo_enabled": true,
"entities":
"description":
"urls": []
,
"followers_count": 363,
"protected": false,
"location": "Turkey",
"default_profile_image": false,
"id_str": "182591357",
"lang": "tr",
"utc_offset": 7200,
"statuses_count": 23921,
"description": "@Besiktas, I Love House Music.",
"friends_count": 238,
"profile_link_color": "0084B4",
"profile_image_url": "http://pbs.twimg.com/profile_images/430409335710416897/pwV3muOK_normal.jpeg",
"notifications": false,
"profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/660819655/mbxstu4fqnkll8b5kyu7.jpeg",
"profile_background_color": "C0DEED",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/182591357/1391607536",
"profile_background_image_url": "http://pbs.twimg.com/profile_background_images/660819655/mbxstu4fqnkll8b5kyu7.jpeg",
"name": "Metin Haşal",
"is_translation_enabled": false,
"profile_background_tile": true,
"favourites_count": 3,
"screen_name": "metinhasal",
"url": null,
"created_at": "Tue Aug 24 23:30:11 +0000 2010",
"contributors_enabled": false,
"time_zone": "Istanbul",
"profile_sidebar_border_color": "FFFFFF",
"default_profile": false,
"following": false,
"listed_count": 0
,
"geo": null,
"in_reply_to_user_id_str": null,
"possibly_sensitive": false,
"lang": "en",
"created_at": "Tue Feb 11 15:49:57 +0000 2014",
"in_reply_to_status_id_str": null,
"place": null,
"metadata":
"iso_language_code": "en",
"result_type": "recent"
,
"contributors": null,
"truncated": false,
"text": "",
"in_reply_to_status_id": null,
"id": 433266923489730560,
"favorite_count": 0,
"source": "<a href=\"http://www.apple.com\" rel=\"nofollow\">iOS</a>",
"retweeted": false,
"coordinates": null,
"entities":
"symbols": [],
"user_mentions": [],
"hashtags": [
"indices": [
53,
58
],
"text": "IMDb"
],
"urls": [
"url": "http://tw.co/IAWzT6Mmp1",
"indices": [
30,
52
],
"expanded_url": "http://www.imdb.com/title/tt0387877",
"display_url": "imdb.com/title/tt0387877"
]
,
"in_reply_to_screen_name": null,
"in_reply_to_user_id": null,
"retweet_count": 0,
"id_str": "433266923489730560",
"favorited": false,
"user":
"follow_request_sent": false,
"profile_use_background_image": true,
"id": 249246669,
"verified": false,
"profile_text_color": "333333",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/2551826686/image_normal.jpg",
"profile_sidebar_fill_color": "DDEEF6",
"is_translator": false,
"geo_enabled": true,
"entities":
"url":
"urls": [
"url": "http://tw.co/VhnKdhkDbZ",
"indices": [
0,
22
],
"expanded_url": "http://www.vimeo.com/bolelof",
"display_url": "vimeo.com/bolelof"
]
,
"description":
"urls": []
,
"followers_count": 787,
"protected": false,
"location": "Moscow City Mufuka!",
"default_profile_image": false,
"id_str": "249246669",
"lang": "en",
"utc_offset": -18000,
"statuses_count": 1969,
"description": "Заядлый турист, маньяк-велосипедист, любитель тату-портаков и всей музыки на свете. Ведущий 'афиши' на мск-24. Хороший парень и возможно ваш друг.",
"friends_count": 108,
"profile_link_color": "0084B4",
"profile_image_url": "http://pbs.twimg.com/profile_images/2551826686/image_normal.jpg",
"notifications": false,
"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
"profile_background_color": "C0DEED",
"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
"name": "болелов борис",
"is_translation_enabled": false,
"profile_background_tile": false,
"favourites_count": 0,
"screen_name": "bolelof_boris",
"url": "http://tw.co/VhnKdhkDbZ",
"created_at": "Tue Feb 08 17:26:01 +0000 2011",
"contributors_enabled": false,
"time_zone": "Quito",
"profile_sidebar_border_color": "C0DEED",
"default_profile": true,
"following": false,
"listed_count": 27
,
"geo": null,
"in_reply_to_user_id_str": null,
"possibly_sensitive": false,
"lang": "en",
"created_at": "Tue Feb 11 15:50:58 +0000 2014",
"in_reply_to_status_id_str": null,
"place": null,
"metadata":
"iso_language_code": "en",
"result_type": "recent"
,
"contributors": null,
"truncated": false,
"text": "",
"in_reply_to_status_id": null,
"id": 433267603868762100,
"favorite_count": 0,
"source": "<a href=\"http://www.apple.com\" rel=\"nofollow\">iOS</a>",
"retweeted": false,
"coordinates": null,
"entities":
"symbols": [],
"user_mentions": [],
"hashtags": [
"indices": [
45,
50
],
"text": "IMDb"
],
"urls": [
"url": "http://tw.co/Mv56yMkFQ2",
"indices": [
22,
44
],
"expanded_url": "http://www.imdb.com/title/tt2193215",
"display_url": "imdb.com/title/tt2193215"
]
,
"in_reply_to_screen_name": null,
"in_reply_to_user_id": null,
"retweet_count": 0,
"id_str": "433267603868762112",
"favorited": false,
"user":
"follow_request_sent": false,
"profile_use_background_image": true,
"id": 249246669,
"verified": false,
"profile_text_color": "333333",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/2551826686/image_normal.jpg",
"profile_sidebar_fill_color": "DDEEF6",
"is_translator": false,
"geo_enabled": true,
"entities":
"url":
"urls": [
"url": "http://tw.co/VhnKdhkDbZ",
"indices": [
0,
22
],
"expanded_url": "http://www.vimeo.com/bolelof",
"display_url": "vimeo.com/bolelof"
]
,
"description":
"urls": []
,
"followers_count": 787,
"protected": false,
"location": "Moscow City Mufuka!",
"default_profile_image": false,
"id_str": "249246669",
"lang": "en",
"utc_offset": -18000,
"statuses_count": 1969,
"description": "Заядлый турист, маньяк-велосипедист, любитель тату-портаков и всей музыки на свете. Ведущий 'афиши' на мск-24. Хороший парень и возможно ваш друг.",
"friends_count": 108,
"profile_link_color": "0084B4",
"profile_image_url": "http://pbs.twimg.com/profile_images/2551826686/image_normal.jpg",
"notifications": false,
"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
"profile_background_color": "C0DEED",
"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
"name": "болелов борис",
"is_translation_enabled": false,
"profile_background_tile": false,
"favourites_count": 0,
"screen_name": "bolelof_boris",
"url": "http://tw.co/VhnKdhkDbZ",
"created_at": "Tue Feb 08 17:26:01 +0000 2011",
"contributors_enabled": false,
"time_zone": "Quito",
"profile_sidebar_border_color": "C0DEED",
"default_profile": true,
"following": false,
"listed_count": 27
,
"geo": null,
"in_reply_to_user_id_str": null,
"possibly_sensitive": false,
"lang": "bg",
"created_at": "Tue Feb 11 15:53:41 +0000 2014",
"in_reply_to_status_id_str": null,
"place": null,
"metadata":
"iso_language_code": "bg",
"result_type": "recent"
]
当我运行文件时,我收到以下错误:
Traceback(最近一次调用最后一次):
File "C:/Users/Piyush/Desktop/2008/runcsv.py", line 11, in <module>
writer.writerow(data)
_csv.Error: sequence expected
谁能告诉我如何解决。我不是很了解python,所以如果你能给我详细的答案,我将不胜感激。
【问题讨论】:
为什么不用熊猫? @selten98 告诉我如何使用它?import pandas df = pd.DataFrame([]) df = df.from_json(JSONHERE) df.to_csv()
这样的事情。
@selten98 试试这个并收到 7 错误!!!
这只是一个例子,它是多行的。我只是无法正确格式化。
【参考方案1】:
import pandas as pd
df = pd.read_json("FILE.json")
df.to_csv("test.csv")
此代码可能对您有用。
【讨论】:
这是一个非常简单的代码,对我不起作用!我的 json 结构很复杂...以上是关于使用python将json转换为csv的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 将 CSV 文件数据转换为 JSON 格式