0

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

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks, this looks good. In this approach, we are writing into csv file inside for loop, is there any alternative approach where we can write all 10 records into csv file in one shot because I've to write more than 200 data into csv file and I don't want to do file operation inside for loop. Appreciated your help in advance on this!
@DaveBrady Method 2 should solve your problem.
0

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)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.