Encore plus simple: autant éviter de modifier la liste et en construire une nouvelle:
ls = [e for e in ls if '.c' not in e]
Je préfère aussi l'utilise de in (ou not in) qui me parait plus claire (on n'a pas besoin de trouver la position de '.c', juste savoir s'il s'y trouve).
Mais ici, ce serait pas plutôt endswith qu'il faudrait utiliser ?
ls = [e for e in ls if not e.endswith('.c')]
Pour le problème des fins de lignes qui ne sont pas trouvées, il faudrait peut-être utiliser le mode d'ouverture "rb" plutôt que "r". Ouvrir le fichier en mode binaire empêche Python d'interpréter les fins de lignes en fonction de l'OS...
Partager