Je pense que si vous lisez le fichier dans une liste, puis faites le vous pouvez itérer sur la liste pour chercher le surnom dont vous voulez vous débarrasser. Vous pouvez le faire plus efficacement sans créer de fichiers supplémentaires, mais vous devrez réécrire le résultat dans le fichier source.
Voici comment je pourrais procéder :
import, os, csv # and other imports you need
nicknames_to_delete = ['Nick', 'Stephen', 'Mark']
Je suppose que nicknames.csv
contient des données comme :
Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
Chargez ensuite le fichier dans la liste :
nicknames = None
with open("nicknames.csv") as sourceFile:
nicknames = sourceFile.read().splitlines()
Ensuite, itérez sur la liste pour faire correspondre vos entrées à supprimer :
for nick in nicknames_to_delete:
try:
if nick in nicknames:
nicknames.pop(nicknames.index(nick))
else:
print(nick + " is not found in the file")
except ValueError:
pass
Enfin, écrivez le résultat dans le fichier :
with open("nicknames.csv", "a") as nicknamesFile:
nicknamesFile.seek(0)
nicknamesFile.truncate()
nicknamesWriter = csv.writer(nicknamesFile)
for name in nicknames:
nicknamesWriter.writeRow([str(name)])
nicknamesFile.close()
1 votes
Essayez
fileinput
comme décrit par @j-f-sebastian aquí . Il semble vous permettre de travailler ligne par ligne, via un fichier temporaire, le tout avec une simplefor
la syntaxe.