Dave Brady
Dave Brady

Reputation: 203

How to print list value as each row in csv using python?

I would like to generate a csv something like below but my python code generating .cvs file like this -

names
delectus aut autem,quis ut nam facilis et officia qui,fugiat veniam minus,et porro tempora

I would like to print each name in a separate row, please find my python code below

test.py

import requests
import csv
my_list = []
for i in range(1, 10):
    
    url = 'https://jsonplaceholder.typicode.com/todos/'+str(i)
    response = requests.get(url)
    jsonResponse = response.json()
    my_list.append(jsonResponse['title'])


print(my_list)

fields = ['names'] 
    
# data rows of csv file 
rows = [my_list]
  
with open('data.csv', 'w') as f:
    write = csv.writer(f)
    write.writerow(fields)
    write.writerows(rows)

Expected output -data.csv

names
delectus aut autem 
quis ut nam facilis et officia qui 
fugiat veniam minus 
et porro tempora

Upvotes: 0

Views: 1158

Answers (2)

Jitesh
Jitesh

Reputation: 318

Method 1 (Using CSV)

import requests
import csv

writer=csv.writer(open('data.csv','w'))

fields = ['names'] 
writer.writerow(fields)

my_list = []
for i in range(1, 10):
    url = 'https://jsonplaceholder.typicode.com/todos/'+str(i)
    response = requests.get(url)
    jsonResponse = response.json()
    my_list.append(jsonResponse['title'])
    writer.writerow([jsonResponse['title']])


print(my_list)

Method 2 (Using pandas)

import requests
import pandas as pd

my_list = []
for i in range(1, 10):
    url = 'https://jsonplaceholder.typicode.com/todos/'+str(i)
    response = requests.get(url)
    jsonResponse = response.json()
    my_list.append(jsonResponse['title'])

print(my_list)

df = pd.DataFrame({'names': my_list})
df.to_csv('data.csv', index=False)

Output in csv file

names
delectus aut autem
quis ut nam facilis et officia qui
fugiat veniam minus
et porro tempora
laboriosam mollitia et enim quasi adipisci quia provident illum
qui ullam ratione quibusdam voluptatem quia omnis
illo expedita consequatur quia in
quo adipisci enim quam ut ab
molestiae perspiciatis ipsa

--- Edit ---

Added method 2, which uses pandas library.

Upvotes: 1

Tim Roberts
Tim Roberts

Reputation: 54733

That's not a CSV file. That's just a plain text file.

with open('data.txt','w') as f:
    print(fields, file=f)
    print('\n'.join(rows), file=f)

Upvotes: 0

Related Questions