2017-02-20 5 views
1

Je lis les adresses d'un csv pour les géocoder. Actuellement, mon script vérifie Python si l'adresse contient un numéro avec cela (je veux seulement géocodage des adresses qui commencent par un chiffre, par exemple « 81 St Nowhere Street, New York »):Vérifiez si l'élément au géocodage commence par un nombre en Python

if hasNumbers(item) == True: 

Cependant, cela signifie un adresse de la forme "81 rue St Nowhere, New York" travaillerait ainsi que "The Silly Boat, Pier 6, New York". Je souhaite uniquement que les adresses commençant par un nombre dans la première position soient géocodées (c'est-à-dire, ignorent les adresses de type Pier 6 et uniquement les adresses de géocodage qui commencent par un nombre).

Quelle est la façon la plus simple de le faire?

Répondre

1

Teste si le premier caractère est un nombre.

def is_number(s): 
    try: 
     float(s) 
     return True 
    except ValueError: 
     return False 

for item in items: 
    if is_number(item[0]): 
    #Do stuff 

En python3 vous pouvez simplement utiliser:

for item in items: 
    if item[0].isnumeric(): 
    #Do stuff 
+0

C'est génial, je vous remercie! –

-1

Vous devez utiliser regex puis

import re 
pattern = r"^\d.*" 
if re.match(patten, word): 
    print "Match Found" 

Motif:

^ - affirme position au début de la chaîne

\d - correspond à un chiffre (égal à [0-9])

.* - Correspond à n'importe quel caractère attendez "\ n" autant de fois que vous le souhaitez.