L'utilisation magique de la fonction split () lorsque python lit des fichiers txt

Je ne sais pas si vous avez déjà eu besoin txtde lire des données contenant plusieurs lignes et plusieurs colonnes dans un fichier. Lorsque nous lisons les données, les données seront stringlues sous la forme de, mais comment convertir le type de données est devenu un gros problème . Voici l'une des méthodes les plus simples et faciles à utiliser.

txtLes données du fichier de test sont les suivantes:

Données du fichier de test
Nous utilisons le code suivant pour lire le fichier et lire readlines()toutes les données à la fois.

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    print(all_data)
# ['6.317438621610765E-05  6.123920173773844E-05  0.00010382572761752979\n', '0.00010819194873178063  8.848784016828921E-05  0.0002043378699454479\n', '9.79660835582763E-05  9.750829986943346E-05  0.00021506758227284687']

Il n'est pas difficile de constater que toutes nos données ont été lues sur la même ligne pour le moment, mais il y a trois parties entre guillemets simples, qui sont cohérentes avec les trois lignes de nos données de test. Nous pouvons également voir que nous devons diviser ces données en parties distinctes string, puis nous pouvons utiliser par exemple des floatmots-clés pour effectuer une conversion de type sur ces données. On voit que les données sont séparées par des espaces. Nous avons d'abord pensé que nous devrions utiliser une .split(" ")méthode pour séparer les données avec des espaces. Nous essayons le code suivant:

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    all_data = all_data[0].split(" ")
    print(all_data)
# ['6.317438621610765E-05', '', '6.123920173773844E-05', '', '0.00010382572761752979\n']

Nous devons d'abord sélectionner la première ligne, utiliser all_data[0], puis les split(" ")séparer dans la fonction d' utilisation . Nous pouvons atteindre l'objectif, mais nous avons également introduit l' ""élément de chaîne vide et \nle danger caché à la fin , ce qui est très délicat. Ce faisant, nous sommes entrés dans un malentendu. La bonne approche est la suivante:

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    all_data = all_data[0].split()
    print(all_data)
# ['6.317438621610765E-05', '6.123920173773844E-05', '0.00010382572761752979']

Nous split()n'ajoutons aucun paramètre lors de l' utilisation de la fonction, de sorte que les ""éléments de chaîne vides et les \ndangers cachés à la fin sont supprimés en même temps et chaque chaîne est séparée en même temps. Si vous devez générer plusieurs lignes de résultats, nous pouvons prédéfinir un tableau pour stocker nos données. Le code complet est le suivant: (toutes les données peuvent être lues de cette manière)

import matplotlib.pyplot as plt
import numpy as np

array = np.zeros((3, 3))
with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    for i, line in enumerate(all_data):
        numbers = line.split()
        for j, element in enumerate(numbers):
            array[i, j] = float(element)

print(array)
# [[6.31743862e-05 6.12392017e-05 1.03825728e-04]
#  [1.08191949e-04 8.84878402e-05 2.04337870e-04]
#  [9.79660836e-05 9.75082999e-05 2.15067582e-04]]

Si vous le trouvez utile, veuillez lever la main pour donner un avis et laissez-moi le recommander à plus de gens ~

Je suppose que tu aimes

Origine blog.csdn.net/u011699626/article/details/110944889
conseillé
Classement