2013-01-20 5 views
1

Le contenu du fichier ressemble à ceci:Txt agit bizarre sous readlines()

1/15/13,930,1441.5 
1/15/13,1000,1442.75 
1/15/13,1030,1444 

je lance:

the_txt_file = open('/txt_file') 

Puis-je exécuter:

the_txt_file_as_a_list = the_txt_file.readlines() 

Puis je cours:

print the_txt_file_as_a_list 

Et je reçois ceci:

['1/15/13,930,1441.5\r1/15/13,1000,1442.75\r1/15/13,1030,1444\r1/'] 

Mais je me attendais quelque chose comme:

['1/15/13,930,1441.5\n','15/13,1000,1442.75\n','15/13,1030,1444\n'] 

Cela me arrive assez souvent, ce qui se passe?

+0

$ xxd/txt_file voir si quelque chose ne va pas avec le fichier – farmer1992

+0

Semble le fichier a des retours chariot (\ r), mais pas de nouvelles lignes (\ n). – mgoffin

+0

Comment pourrais-je résoudre ce problème? – user1367204

Répondre

1

Je suppose que vous, ou le créateur original de ce fichier de données étaient sur un Mac. Semble que vous vous attendez à ce qu'il s'agisse d'une simple fin de ligne '\ n', mais souffre de la fin de ligne par défaut du système d'éditeurs d'origine (très probablement).

Une solution facile, est d'appeler open(...) avec l'option rU comme ceci:

the_txt_file = open('/txt_file', 'rU')

Cela garantit que le fichier est ouvert r Ead seulement, et utilise U support niversal nouvelle ligne lorsque lire le fichier particulier.

Bonne chance!

+0

Cela a fonctionné parfaitement. Je l'ai testé en faisant deux choses distinctes: 1. imprimer le fichier_txt 2. pour l'article du fichier_txt: imprimer article – user1367204

2

Il semble donc que le problème avait quelque chose à voir avec la façon dont mon mac interagi avec le fichier txt

Le problème a été résolu en échangeant:

the_txt_file = open('/txt_file') 

avec:

the_txt_file = open('/txt_file', 'rU') 

Le 'rU' est appelé 'universal-readline'. Ouvrir un fichier en mode 'rU' ouvre un fichier en mode readline universel.Lors de la course:

the_txt_file_as_a_list = the_txt_file.readlines() 

puis:

print the_txt_file_as_a_list 

ma sortie est passé de:

['1/15/13,930,1441.5\r1/15/13,1000,1442.75\r1/15/13,1030,1444\r1/'] 

à:

['1/15/13,930,1441.5\n', '1/15/13,1000,1442.75\n', '1/15/13,1030,1444\n'] 

Plus tard, j'ai pu imprimer chaque article par:

for item in the_txt_file_as_a_list: 
    print item 

La sortie ressemblait à:

1/15/13,930,1441.5 

1/15/13,1000,1442.75 

1/15/13,1030,1444