Created
March 19, 2016 20:21
-
-
Save AlexArcPy/29d70d15a9db19e82976 to your computer and use it in GitHub Desktop.
unicodecsv - read csv files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unicodecsv | |
csv_file = r"C:\GIS\temp\graffiti.csv" | |
#read as is | |
with open(csv_file,"rb") as f: | |
reader = unicodecsv.DictReader(f) | |
reader_rows = list(reader) | |
print reader_rows[:3] | |
#[{u'OBJECTID': u'1', u'CID': u'11', u'POINT_X': u'-122.396707', u'SqFtAprox': u'5', u'FID': u'0', u'POINT_Y': u'37.7855429999'}, | |
#{u'OBJECTID': u'2', u'CID': u'21', u'POINT_X': u'-122.411825', u'SqFtAprox': u'6', u'FID': u'1', u'POINT_Y': u'37.7739790002'}, | |
#{u'OBJECTID': u'3', u'CID': u'28', u'POINT_X': u'-122.474009', u'SqFtAprox': u'4', u'FID': u'2', u'POINT_Y': u'37.7803529995'}] | |
#read only certain columns | |
fields_to_take = ['CID','POINT_X','POINT_Y'] | |
with open(csv_file,"rb") as f: | |
reader = unicodecsv.DictReader(f) | |
reader_rows = list(reader) | |
reader_filtered_fields = [{field:dict_row[field] for field in fields_to_take} | |
for dict_row in reader_rows] | |
print reader_filtered_fields[:3] | |
#[{'POINT_X': u'-122.396707', 'POINT_Y': u'37.7855429999', 'CID': u'11'}, | |
#{'POINT_X': u'-122.411825', 'POINT_Y': u'37.7739790002', 'CID': u'21'}, | |
#{'POINT_X': u'-122.474009', 'POINT_Y': u'37.7803529995', 'CID': u'28'}] | |
#write to a new csv with a query | |
output_file_path = r"C:\GIS\temp\graffiti_filtered.csv" | |
fields_to_take = ['CID','POINT_X','POINT_Y'] | |
with open(csv_file,"rb") as f: | |
reader = unicodecsv.reader(f) | |
headers = [field for field in reader.next() if field in fields_to_take] | |
with open(output_file_path,'ab') as output_file: | |
writer = unicodecsv.writer(output_file,delimiter=',') | |
writer.writerow(headers) | |
for row in reader: | |
if int(row[2]) > 2000: | |
row_filtered = [row[2],row[4],row[5]] | |
writer.writerow(row_filtered) | |
#three first rows of the output csv file | |
#CID,POINT_X,POINT_Y | |
#2022,-122.413350001,37.7692199998 | |
#2093,-122.4635,37.7143009993 | |
#2110,-122.410066,37.774991 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment