Skip to content

Commit d417e52

Browse files
Working with CSV
1 parent 9f32128 commit d417e52

File tree

1 file changed

+246
-0
lines changed

1 file changed

+246
-0
lines changed

p19.py

Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
# File3.csv
2+
# name,email,phone_no
3+
# Ravin,[email protected],+918732904392
4+
# Rupen,[email protected],+917433089863
5+
6+
7+
8+
9+
10+
11+
# Work with CSV File
12+
# csv file ---> used for storing data in tabula form
13+
14+
15+
16+
17+
# Read to CSV
18+
# we can read csv file using reader function or DictReader class from csv module
19+
20+
21+
# Read csv file using reader
22+
from csv import reader
23+
with open('file3.csv','r') as rf:
24+
csv_reader=reader(rf)
25+
# csv_reader is iterator
26+
print(csv_reader) # o/p: <_csv.reader object at 0x0125D8E8>
27+
print(type(csv_reader)) # o/p: <class '_csv.reader'>
28+
for i in csv_reader: # csv_reader is iterator so we can print it only one time, if we want to use more than one time then we can convert it into list.
29+
print(i)
30+
31+
# o/p: ['name', 'email', 'phone_no'] # but here column name also printed, we can overcome this problem using next() methos
32+
# ['Ravin', '[email protected]', '+918732904392']
33+
# ['Rupen', '[email protected]', '+917433089863']
34+
35+
36+
37+
38+
39+
# from csv import reader
40+
# with open(r'file3.csv','r',encoding='utf=8') as rf:
41+
# csv_reader=reader(rf)
42+
# # csv_reader is iterator
43+
# print(csv_reader) # o/p: <_csv.reader object at 0x0125D8E8>
44+
# print(type(csv_reader)) # o/p: <class '_csv.reader'>
45+
# next(csv_reader)
46+
# for i in csv_reader: # o/p: ['Ravin', '[email protected]', '+918732904392']
47+
# print(i) # ['Rupen', '[email protected]', '+917433089863']
48+
49+
50+
51+
52+
53+
54+
55+
56+
# Read csv file using DictReader
57+
from csv import DictReader # we read csv file as ordered dictionary using DictReader
58+
with open('file3.csv','r') as rf:
59+
csv_reader1=DictReader(rf)
60+
print(type(csv_reader1)) # o/p: <class 'csv.DictReader'>
61+
for line in csv_reader1:
62+
print(line)
63+
64+
# o/p: {'name': 'Ravin', 'email': '[email protected]', 'phone_no': '+918732904392'}
65+
# {'name': 'Rupen', 'email': '[email protected]', 'phone_no': '+917433089863'}
66+
67+
68+
69+
70+
71+
72+
73+
from csv import DictReader
74+
with open('file3.csv','r') as rf: # o/p: Ravin
75+
csv_reader1=DictReader(rf) # o/p: Rupen
76+
for line in csv_reader1:
77+
print(line['name'])
78+
79+
80+
81+
82+
83+
84+
85+
86+
# File3.csv
87+
# name|email|phone_no
88+
# Ravin|[email protected]|+918732904392
89+
# Rupen|[email protected]|+917433089863
90+
91+
from csv import DictReader
92+
with open('file3.csv','r') as rf: # o/p: {'name|email|phone_no': 'Ravin|[email protected]|+918732904392'}
93+
csv_reader1=DictReader(rf) # {'name|email|phone_no': 'Rupen|[email protected]|+917433089863'}
94+
for line in csv_reader1:
95+
print(line)
96+
97+
98+
99+
# sometimes we get error just because of | instead of , so we can address this issue by using delimiter
100+
from csv import DictReader
101+
with open('file3.csv','r') as rf: # o/p: {'name': 'Ravin', 'email': '[email protected]', 'phone_no': '+918732904392'}
102+
csv_reader1=DictReader(rf,delimiter='|') # {'name': 'Rupen', 'email': '[email protected]', 'phone_no': '+917433089863'}
103+
for line in csv_reader1:
104+
print(line)
105+
106+
107+
108+
109+
# DictReader is better than reader
110+
111+
112+
113+
114+
115+
# Write to CSV
116+
# writer, DictWriter -----> for write into csv file
117+
118+
119+
# write into csv using writer
120+
from csv import writer
121+
with open('file3.csv','w') as wf: # now file3.csv is empty
122+
csv_write=writer(wf) # there are two methods in writer for writing 1)writerow, 2)writerows
123+
csv_write.writerow(['name','country'])
124+
csv_write.writerow(['Rupen','Germany'])
125+
csv_write.writerow(['Ravin','India'])
126+
csv_write.writerow(['Yash','Austrelia'])
127+
128+
# o/p: name,country
129+
# here we are getting line spce between two row data
130+
# Rupen,Germany
131+
132+
# Ravin,India
133+
134+
# Yash,Austrelia
135+
136+
137+
138+
139+
140+
141+
from csv import writer
142+
with open('file3.csv','w',newline='') as wf: # now file3.csv is empty
143+
csv_write=writer(wf) # there are two methods in writer for writing 1)writerow, 2)writerows
144+
145+
# # 1)writerow ----> inside list
146+
# csv_write.writerow(['name','country']) # o/p: name,country
147+
# csv_write.writerow(['Rupen','Germany']) # Rupen,Germany
148+
# csv_write.writerow(['Ravin','India']) # Ravin,India
149+
# csv_write.writerow(['Yash','Austrelia']) # Yash,Austrelia
150+
151+
152+
# 2)writerows ----> inside list inside list
153+
csv_write.writerows([['name','country'],['Rupen','Germany'],['Ravin','India'],['Yash','Austrelia']])
154+
155+
156+
157+
# here we are using from csv import dict....., we can do this by using only import csv, but we don't import csv because if we import csv then python searching for dict... and it may take more time
158+
159+
160+
161+
162+
163+
# write into csv using DictWriter
164+
from csv import DictWriter # when we use dictwrite we have to show header(colum_name) in code
165+
with open("file3.csv",'w') as wf: # file3.csv is empty
166+
csv_write=DictWriter(wf,fieldnames=['first_name','last_name','age'])
167+
csv_write.writeheader() # this method will write header in csv file
168+
# here, also two methos for writing in csv 1) writerow 2) wrterows
169+
csv_write.writerow({
170+
'first_name':'Ravin',
171+
'last_name':'Rakholiya',
172+
'age':22
173+
}) # o/p: first_name,last_name,age
174+
csv_write.writerow({ #
175+
'first_name':'Rupen', # Ravin,Rakholiya,22
176+
'last_name':'Rakholiya1', #
177+
'age':19 # Rupen,Rakholiya1,19
178+
})
179+
180+
181+
182+
183+
184+
# we are getting space between two line in output, and we can address this issue using newline=''
185+
186+
from csv import DictWriter # when we use dictwrite we have to show header(colum_name) in code
187+
with open("file3.csv",'w',newline='') as wf: # file3.csv is empty
188+
csv_write=DictWriter(wf,fieldnames=['first_name','last_name','age'])
189+
csv_write.writeheader() # this method will write header in csv file
190+
# here, also two methos for writing in csv 1) writerow 2) wrterows
191+
192+
193+
# # 1) writerow ----> inside dict
194+
# csv_write.writerow({
195+
# 'first_name':'Ravin',
196+
# 'last_name':'Rakholiya',
197+
# 'age':22
198+
# }) # o/p: first_name,last_name,age
199+
# csv_write.writerow({ # Ravin,Rakholiya,22
200+
# 'first_name':'Rupen', # Rupen,Rakholiya1,19
201+
# 'last_name':'Rakholiya1',
202+
# 'age':19
203+
# })
204+
205+
# 2) writerows -----> inside list inside dict
206+
csv_write.writerows([{'first_name':'Ravin', 'last_name':'Rakholiya','age':22},
207+
{'first_name':'Rupen', 'last_name':'Rakholiya1','age':19}])
208+
209+
210+
211+
# DictWriter is betterthan Writer
212+
213+
214+
215+
216+
217+
# read csv ---> reader, DictReader
218+
# write csv ---> writer, DictWriter
219+
220+
221+
222+
223+
224+
225+
226+
227+
228+
229+
230+
# Read and Write CSV file simulteneously -----> read data from one csv and write that data into another csv file
231+
232+
from csv import DictReader,DictWriter
233+
with open('file3.csv','r') as rf:
234+
with open('file4.csv','w',newline='') as wf: # here file3.csv has data and file4.csv was empty
235+
csv_read=DictReader(rf)
236+
csv_write=DictWriter(wf,fieldnames=['first_name','last_name','age'])
237+
csv_write.writeheader()
238+
for line in csv_read: # o/p: first_name,last_name,age (in file4.csv for csv.writerow(line))
239+
# csv_write.writerow(line) # Ravin,Rakholiya,22
240+
# ----OR----- # Rupen,Rakholiya1,19
241+
fname,lname,age=line['first_name'],line['last_name'],line['age']
242+
csv_write.writerow({
243+
'first_name':fname.upper(), # o/p: in file4.csv
244+
'last_name':lname.upper(), # first_name,last_name,age
245+
'age':age # RAVIN,RAKHOLIYA,22
246+
}) # RUPEN,RAKHOLIYA1,19

0 commit comments

Comments
 (0)