0
votes

Modifier l'index spécifique de n'importe quelle ligne dans un fichier texte

J'ai ce fichier TXT avec les noms d'utilisateur et certaines données qui leur sont liées xxx

Je souhaite modifier les 2 derniers numéros

par exemple, VAC3 a gagné un jeu avec 90 Points dans 7 tirs, je veux que la nouvelle liste soit xxx

J'ai tout essayé et rien ne semble fonctionner, je sais que je dois lire le TXT à une liste, Ensuite, réécrivez les données dans cette liste, puis écrasez l'ensemble du TXT. Puis-je obtenir un peu d'aide pls.


4 commentaires

Comment le programmateur peut-il savoir que VAC3 devrait se terminer avec 90,7? D'où vient ces données?


Quelle partie avez-vous des difficultés avec, en particulier?


Est-ce que cela répond à votre question? modifier la valeur spécifique dans le fichier CSV via Python


Stackoverflow.com/ Questions / 26903304 / ...


3 Réponses :


0
votes

Si vous ne voulez pas utiliser csv.reader : xxx


0 commentaires

0
votes

Essayez ceci:

with open('players.txt', 'r') as f:
    players = []
    data = f.readlines()
    winner = 'vac3'
    scores = ['90', '7']
    for line in data:
        player = line.split(',')
        if player[0] == winner:
            player[4] = scores[0]
            player[5] = scores[1]
        players.append(player)

with open('players.txt', 'w') as f:
    f.writelines('')
    for player in players:
        plr = ','.join(player) + "\n"
        f.write(plr)


0 commentaires

0
votes

Vous pouvez utiliser REGEX pour identifier le modèle et remplacer

import re

inpt = "vac3,90,7".split(',')
fmt = f"^({inpt[0]},.*,)\d+,\d+$"
new_txt = ""
with open('t.txt', 'r') as read_f, open('new.txt', 'w') as write_f:
    for line in read_f:
        new_txt += re.sub(fmt, fr"\g<1>{inpt[1]},{inpt[2]}", line)
    write_f.write(new_txt)


0 commentaires