Difficulté pour programmer une autocompletion en PYTHON

Fermé
MonsieurPa Messages postés 1 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 17 juillet 2015 - Modifié par MonsieurPa le 17/07/2015 à 06:13
 Utilisateur anonyme - 23 janv. 2016 à 11:30
Bonjour à tous, je suis actuellement en train de coder un programme d'autocompletion en python

Voilà le but, nous avons un fichier text dans lequel ce trouve

Paris, 458 boulevard Saint-Germain
Paris, 343 boulevard Saint-Germain
Marseille, 343 boulevard Camille Flammarion
Marseille, 29 rue Camille Desmoulins
Marseille, 1 chemin des Aubagnens
Paris, 12 rue des singes
Paris, 34 quai VoLtAiRe
Paris, 34 rue Voltaire
Lille, 120 boulevard Victor Hugo
Marseille, 50 rue Voltaire
Toulouse, 90 rue Voltaire
Strasbourg 84 rue du Bouclier
Marseille, 78 boulevard de la libération
Lille, 30 rue Victor Danel
Mont Saint Martin, 42 rue de Bordeaux
Mont de Marsan, 100 avenue Pierre de Coubertin
Strasbourg, 391 boulevard de Nancy
Lyon, 56 rue du Docteur Albéric Pont
Lyon, rue du Docteur Albéric Pont
56 rue du Docteur Albéric Pont, Lyon
Lyon 56 grande rue
Lille, 90 rue d'Arras
Lille, 76 impasse Georges Pompidou

Je dois le parser de sorte qu'il me donne les 5 lettres les plus probable en commencent par la premiere lettre de chaque ville. la sortie dois normalement être :

{m} {p} {l] {s} {t} ( le programme reste en attente d'une prochaine lettre pour l'auto complétion )

Voicie ce que moi j'ai coder (Je suis débutant en python) :

import readline
import sys
from collections import Counter

dicoTypeDeVoie = ['all\xc3\xa9e', 'avenue', 'boulevard', 'chemin', 'rue', 'quai', 'square', 'place', 'impasse']

if len(sys.argv) == 1:
print("Error detected, [Program] [File]")
sys.exit()
elif len(sys.argv) == 2:
filename = sys.argv[1]
f = open(filename,'r')
#b = f.read().strip().split(None, 3)
b = f.read().splitlines()
i = 0
liste = []
for line in b:
if ',' not in line:
print line

else:
(ville, adresse) = line.split(', ')
if len(adresse.split(' ')) < 3:
print line
else:
numero = adresse.split(' ')[0]
typeDeVoie = adresse.split(' ')[1]
nomDeLaVoie = adresse.split()[2]

if typeDeVoie not in dicoTypeDeVoie:
print line
else:
nomDeLaVoie = adresse.replace(numero, '').replace(typeDeVoie, '')
if not numero.isdigit():
print line
else:
liste.append(ville + ' ' + adresse)


#print [b[0][0]]
sys.stdout.write(b)
#texteConvertiEnListe = list(texte)
#sansLesDoublons = set(texteConvertiEnListe)
#sansLesDoublonsTrieParNbOccurrence = sorted(sansLesDoublons,key = lambda self,
# other = texteConvertiEnListe: other.count(self), reverse = True)
#for lettre in sansLesDoublonsTrieParNbOccurrence:
#print "{"+lettre.lower()+"}",

Pourriez vous m'aider à avancer ?



A voir également:

1 réponse

Utilisateur anonyme
23 janv. 2016 à 11:30
Ton programme ne fonctionne pas ? Il a quelle sortie ?
0