0
votes

Tri des données de fichier .txt

Je gère des requêtes sur MySQL à travers Python. Une fois la lecture des données, je voudrais les trier par pourcentage. Toute aide serait volontiers appréciée.

La méthode que j'utilise pour écrire est la suivante: p> xxx pré>

code em> strong> est la requête qui est couru. P>

contrôleur em> strong> est des informations d'identification pour faire une communication réussie. P>

Une fois écrit au fichier est le suivant: P>

DESKTOP 
Owner: Nan 
Values: 231.8 out of 329.2 
Percent used: 70% 

REGRESSION 
Owner: None 
Values: 6.6 out of 10.2 
Percent used: 64% 

POC 
Owner: ACE 
Values: 45.1 out of 81.5 
Percent used: 55% 


0 commentaires

3 Réponses :


1
votes

Pour trier les données, vous devez obtenir les données de la base de données, trier, puis l'imprimer dans le fichier au lieu d'écrire dans le fichier après chaque ligne. Quelque chose comme ceci: xxx


0 commentaires

1
votes

Bigo. Peut-être devriez-vous envisager de calculer le pourcentage à l'intérieur de votre requête MySQL et d'utiliser la commande pour obtenir le droit de commander.

Puis, sur Python, vous aurez déjà les enregistrements dans l'ordre que vous avez destiné.

Par exemple : xxx

puis faites ce que vous voulez avec les données


0 commentaires

1
votes

Ajouter des sections à une liste, trier la liste des listes par le dernier élément, puis sortie la liste:

from operator import itemgetter

report = []
for r in cursor:  # show tables one by one
    if str(type(r[5])) == "<class 'decimal.Decimal'>":
        percent = r[5] / r[2] * 100
        if percent > mid_critical and percent < critical:
            report.append(
                (
                    str(r[1]),
                    "\nOwner:",
                    str(r[8]),
                    "\nValues:",
                    str(r[5]),
                    "out of",
                    str(r[2]),
                    "\nPercent used: %d%% \n" % (percent),
                )
            )

report.sort(key=itemgetter(-1), reverse=True)

with open("report.txt", "a") as f:
    print("\n******************* Mid Critical: **************", file=f)
    print("\n".join(report))


2 commentaires

Bonjour @ipaleka, le code fonctionne. Seule problème est que la liste va de petit à gros. Je l'aimerais de gros à petit. De plus, la sortie ne sort pas correctement. La sortie im obtenue à partir de maintenant est ('cvs_functional', '\ NOWNER:', "retiré", "\ nvalues:", décimal ("19,3"), "de", décimal ("31 .8 ") , '\ Npercent utilisé: 57% \ n')


J'ai ajouté inverse = true pour le premier problème. Et sur l'autre problème, j'ai ajouté str () , mais je ne sais pas pourquoi cela se passe dans mon code et non dans la tienne.