2015-11-05 2 views
2

Je rencontre des problèmes pour essayer de lire un fichier correctement.Python lit des blocs de texte

J'ai seulement un code pour montrer ce que je cherche à viser légèrement. Mais je veux lire chaque morceau de données (quatre lignes) et insérer chacun de ces morceaux dans un tableau. J'ai également besoin de séparer les termes «ville», «état» et «zip» les uns des autres. Je comprends que je suis supposé lire le fichier, pour chaque morceau que j'ai lu jusqu'à une ligne vide, à l'intérieur duquel je vérifierais pour voir s'il s'agit de la troisième ligne et, si c'est le cas, analyser chaque partie dans son propre élément et fais tout cela jusqu'à la fin. J'ai cependant des problèmes avec la partie codage avec Python. Je ne connais pas trop Python.

Mes données:

Name 
address 
city, state zip 
phone number 
//empty line 
Name 
address 
.... 

Mon code:

with open('tester_everything.txt') as f:                             
mylist = []                                    
i=0                                      
for lines in f:                                   
    other_list = []   
    if lines == '\n': 
    mylist.append(other_list) 
    other_list = [] 

    other_list.insert(i, lines)                              
    i = i+1                                    
print mylist                                    
f.close() 

Cela crée tous les éléments vides à l'intérieur. Mylist

+0

Vous avez vidé 'other_list' avant de l'enregistrer. Supprimer le premier 'other_list = []' après le 'for' et le réécrire après le' with'. – Kamejoin

+0

Est-ce que: 'city, state zip' ou' city, state, zip'? –

Répondre

2
with open('tester_everything.txt') as f:                             
    mylist = [] 
    other_list = []                                     
    for lines in f:                                   
     if lines == '\n': 
      mylist.append(other_list) 
      other_list = [] 
     else: 
      other_list.append(lines)                                                                 
    print mylist                                   
+0

Merci, je ne peux pas croire que j'oublie la déclaration d'autre maintenant que je le vois. Si je voulais ensuite analyser cette troisième ligne de données, ajouterais-je simplement une autre instruction if/else dans l'instruction else? – tholsapp

+0

Oui. Vous pouvez définir un compteur comme 'count = 0' avant le' for', et le remettre à zéro 'if lines == '\ n'' et ajouter 1 sinon. Ensuite, vous pouvez ajouter 'if count == 2;' (troisième ligne) et compléter votre code. – Kamejoin