0
votes

Lecture à partir d'un fichier texte et stockage dans un tableau

Si j'ai un fichier texte contenant les nombres suivants:

[[5.078780,5.078993],[7.633073,7.633180],[2.919274,2.919369],[3.410284,3.410314]]

Comment le lire et le stocker dans un tableau, pour qu'il devienne:

5.078780 5.078993
7.633073 7.633180
2.919274 2.919369
3.410284 3.410314


1 commentaires

Qu'est-ce que tu as essayé jusque-là? Une idée des fonctions pertinentes à utiliser, etc.? Essayez de diviser le problème en deux parties: lire les données d'un fichier et formater les données.


8 Réponses :


-1
votes
with open('blah.txt', 'r') as file:
    a=[[l.split(' ')[0], l.split(' ')[1] for l in file.readlines() ]

1 commentaires

Vous pouvez simplement réduire les appels fractionnés de 2 à 1 en les fractionnant sur l



0
votes

Cela devrait fonctionner,

with open('filepath') as f:
    array = [line.split() for line in f.readlines()]


0 commentaires

0
votes

Approche: Avoir une liste de résultats = [] Divisez le texte par des retours à la ligne \ n . Maintenant dans une boucle for diviser chaque ligne par un caractère d'espace et attribuer à un tuple ajouter un tuple à la liste de résultats Je m'abstiens d'écrire du code ici pour vous permettre de le résoudre.


0 commentaires

1
votes
[[5.07878, 5.078993], [7.633073, 7.63318], [2.919274, 2.919369], [3.410284, 3.410314]]

2 commentaires

C'est la bonne réponse :)


Peut utiliser map pour améliorer la lisibilité



0
votes

Cela devrait faire

with open ("data.txt", "r") as myfile:
    data=myfile.readlines()

for i in range(len(data)):
    data[i]=data[i].split()


0 commentaires

0
votes

Python fournit le module parfait pour cela, il s'appelle csv :

print(csv_to_array('test.csv', delimiter=';'))

Si vous avez plus tard un fichier avec un séparateur de champ différent, dites ";", il vous suffira alors de changer l'appel en:

import csv

def csv_to_array(file_name, **kwargs):
    with open(file_name) as csvfile:
        reader = csv.reader(csvfile, **kwargs)
        return [list(map(float, row)) for row in reader]


print(csv_to_array('test.csv'))

Notez que si vous ne vous souciez pas d'importer numpy alors cette solution est encore meilleure.


0 commentaires

0
votes

Vous voulez d'abord récupérer le contenu du fichier dans un tableau de chaînes (chaque chaîne est une ligne du fichier)

avec open ("myfile.txt", 'r') comme f: file_content = f.readlines ()

Reportez-vous à la documentation ouverte pour en savoir plus: https://docs.python.org/3/library/functions.html#open

Ensuite, vous voulez créer une liste p >

content_list = [s.split(' ') for s in file_content]

Et puis vous voulez le remplir avec chaque chaîne, quand chaque chaîne doit être divisée avec un espace (en utilisant la fonction split () ) qui fait une liste avec les deux valeurs et ajoutez-le à content_list , utilisez une boucle for!

for line in file_content:
    values = line.split(' ') # split the line at the space
    content_list.append(values)

Au fait, cela peut être simplifié avec un Compréhension de la liste :

content_list = []


0 commentaires

0
votes

Pour convertir à ce format exact:

[[5.07878, 5.078993], [7.633073, 7.63318], [2.919274, 2.919369], [3.410284, 3.410314]]

renvoie:

with open('filepath', 'r') as f:
    raw = f.read()

arr = [[float(j) for j in i.split(' ')] for i in raw.splitlines()]
print arr


0 commentaires