Archit Garg
Archit Garg

Reputation: 1012

convert the following json to csv using python

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

I have tried the following code but it gives error:-

from nltk.twitter import Twitter
from nltk.twitter.util import json2csv

with open('C:/Users/Archit/Desktop/raw_tweets.json', 'r') as infile:
# Variable for building our JSON block
json_block = []

for line in infile:

    # Add the line to our JSON block
    json_block.append(line)

    # Check whether we closed our JSON block
    if line.startswith('{'):

        # Do something with the JSON dictionary
        json2csv(json_block, 'tweets.csv', ['id','text','created_at','in_reply_to_user_id','in_reply_to_screen_name','in_reply_to_status_id','user.id','user.screen_name','user.name','user.location','user.friends_count','user.followers_count','source'])

        # Start a new block
        json_block = []

Error:

File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)

Upvotes: 0

Views: 762

Answers (3)

user4215649
user4215649

Reputation: 25

This is way too late but I also stumbled upon some errors today. I figured that you actually have to import from nltk.twitter.common instead of util. Hope this helps others who stumbled upon this thread

Upvotes: 1

Shahriar
Shahriar

Reputation: 13804

import csv, json

data = []

with open('C:\Users\Shahriar\Desktop\T.txt') as data_file:    
    for line in data_file:
        data.append(json.loads(line))


keys = data[0].keys()

with open('data.csv', 'wb') as csvF:
    csvWriter = csv.DictWriter(csvF, fieldnames=keys)
    csvWriter.writeheader()
    for d in data:
        csvWriter.writerow(d)

Output:

a,c,b
1,1,1
2,2,2
3,3,3
4,4,4

Upvotes: 1

tashuhka
tashuhka

Reputation: 5126

# Read json 
filename = 'C:/Users/Archit/Desktop/raw_tweets.json'
lines = [line.replace("{", "").replace("}", "").replace(":", ",") for line in open(filename)]

# Write csv
with open('out.csv', 'w') as csv_file:
   for line in lines:
      csv_file.write("%s\n" % line)

Upvotes: 0

Related Questions