#1 Le 15/11/2010, à 18:11
- kikislater
[Python] Parser un fichier puis Traitement ligne par ligne
Bonjour,
Il faut le reconnaître, je suis assez nul en python ! Voilà, j'ai commencé un petit programme qui sur la base d'un autre batchera un fichier pour obtenir le résultat.
Pour info, le voici :
#!/usr/bin/env python
# -*- coding: utf-8 -*-#-------------------------------------------------------------
# Name : Batch Reverse Geocode
# begin : 15 nov 2010
# Source of reverse geocode : http://code.google.com/p/geopy/wiki/ReverseGeocoding
#
# Batch Reverse Geocode is free software and is offered without guarantee
# or warranty. You can redistribute it and/or modify it
# under the terms of version 2 of the GNU General Public
# License (GPL v2) as published by the Free Software
# Foundation (www.gnu.org).
#------------------------------------------------------------# Import des module
from geopy import geocoders
import csv
import time
import urllib
import os.path
import operator# Google Map API key
g = geocoders.Google('CléGoogleMapsAPI')# Parser CSV
#csvfile = csv.reader(open(raw_input("Entrez le chemin du fichier CSV")))
#for latitude, longitude, name in csvfile:
# dicts.append({'latitude': latitude, 'longitude' : longitude, 'name' : name})longitude = raw_input("Saisissez la latitude : ")
latitude = raw_input("Saisissez la longitude : ")
point = (latitude, longitude)
(place, new_point) = g.reverse(point)
result = place, ";" ,latitude,";" , longitude
print resultfileout = open ('reverse_geocoding.txt', 'w')
for i in result:
fileout.write(i)
fileout.close()
Au final, je souhaiterais parser un fichier. Il me semble avoir compris ça même si ce n'est pas présent dans le fichier !
Mais je souhaiterais surtout lire les colonnes latitude et longitude de chaque fichier pour pouvoir exécuter la fonction et produire un fichier .... (les raw_input n'auront bien entendu plus leur place !
Pour la CléGoogleMapsAPI, il faut s'en procurer une en s'enregistrant sur le site de l'api google ...
Pourriez-vous m'éclairer svp ? Faut-il que je fasse une boucle dans un dictionnaire pour aggréger mes résultats ?
Merci
Dernière modification par kikislater (Le 15/11/2010, à 18:16)
Hors ligne
#2 Le 15/11/2010, à 19:01
- kikislater
Re : [Python] Parser un fichier puis Traitement ligne par ligne
Un début d'amélioration déjà :
result = place, ";" ,latitude,";" , longitude, '\n'
print result,fileout = open ('reverse_geocoding.txt', 'a')
Je crois avoir trouvé pour parser ligne par ligne, donc ce sera bon j'espère !
Hors ligne
#3 Le 16/11/2010, à 11:24
- jde3
Re : [Python] Parser un fichier puis Traitement ligne par ligne
Pour lire un fichier ligne par ligne, jette un oeil à la fonction readlines. Pour découper chaque ligne, tu peux utiliser split.
Un exemple :
fp = open (input_file, "r")
for l in fp.readlines ():
list_values = l.split ()
long = list_values[0]
lat = list_values[1]
ici, la longitude est stockée dans la première colonne du fichier et la latitude dans la deuxième.
Hors ligne