2017-09-18 2 views
0

J'utilise Python 3.4.2 et Visual Studio Code Je suis un débutant total J'ai essayé de chercher la réponse, mais probablement ne savent pas assez pour rechercher les bonnes réponses. J'essaie d'apprendre Python et c'est mon outil d'apprentissage. C'est un refaire d'un programme que j'ai écrit en basic au début des années 80 sur un TRASH32 où je ne pouvais pas accéder à un fichier de données et je devais entrer les données à la main.comment puis-je convertir une longue chaîne avec des valeurs séparées par des virgules dans une liste de chaînes de valeurs

Je veux ouvrir un fichier qui est une longue chaîne avec les éléments (espaces, str, int) séparés par des virgules. (exemple: "EMD", "20170820", 1, 1,, 870, "D", "N", "BUN", ") mais environ 450 000 charaters de long J'essaie de faire une liste de chaînes séparées à les virgules pour que je puisse les appeler, la liste [0: 6] retourne 870, ect ..
J'ai tried-

lines = tuple(open('filename','r')) # all in only one string. 
    print(list)      # this showed whole file was read.  

Je tried-

with open('filename'):  -this opens file as a list of strings, but only                
    list = line.split(',') the last third of the file is in the list. 
    print(list)   # this showed whole file was read.     

Je tried-

with open('filename',('r'))as f: -this also opens the file as a list of 
    reader = csv.reader(f)   strings, only the last third or so of the 
    list = list(reader)   file is in the list. 
print(list)   # this showed whole file was read.      

Je suppose que ma question est, que puis-je faire avec le 'ouvert (filename ') code' pour rendre le fichier entier accessible afin que je puisse travailler avec? Voici un exemple de mon code et un exemple des résultats. Si ce n'est pas faisable, comment puis-je convertir une longue chaîne avec des valeurs séparées par des virgules dans une liste de chaînes des valeurs.

import sys 
import os 
import csv 

with open('c:/code/EMD0820.DRF'): 
    for line in open('c:/code/EMD0820.DRF'): 
     list = line.split(',') 
     #print(list)     # this shows entire file came thru 

str_list=str(list) 
print (str_list[0:30])     # this prints out 29 characters 1a 
#print(line[0:5])       # this prints "EMD" 1b 
#print(list)        # this prints lists but only from page 117 of 119 to the end. 1c 

print (list[1:15])      # prints first 14 strings starting where print(line[0:5]) did. 1d 

résultats

1a ['"EMD"', '"20170820"', '11', 

1b "EMD" 

1c ["EMD","20170820",11, 8,,1320,"D",,"C","BUN","Clm2500n2l",6000,............to end of file] 

1d [,"20170820",11, 8,,1320,"D",,"C","BUN","Clm2500n2l",6000,2500,2500,66.86] 
+0

Il est difficile pour moi de comprendre votre problème. veuillez vous assurer de mettre ici précisément le code que vous avez essayé - des parties du code ici sont invalides et provoquent des erreurs d'exécution. – Elazar

Répondre

0
with open('/path/to/file') as f: 
    content = f.read().replace('\n', ',') 
    content_list = content.split(',') 

print(content_list) 
+0

travaillé. la longueur du fichier 127716 à la fois début et fin sont là –

0

Vous devez lire le fichier dans un objet en mémoire. Ensuite, vous pouvez appeler split().

Essayez:

with open('c:/code/EMD0820.DRF') as f: 
    read_file = f.read() 
    l = read_file.split(",") 
+0

travaillé. longueur du fichier 127627 début et la fin sont là –