J'ai besoin de vérifier si le fichier Mon code est le suivant: P> .csv code> Je travaille avec des extrémités avec plus de 1
"\ n" code> ligne. S'il trouve plus qu'une ligne vide, il les supprime tout sauf un.
import os
from pathlib import Path
def remove_blanks():
dirname = os.path.dirname(os.path.abspath(__file__))
path: Path = Path(os.path.join(dirname, "data.csv"))
with open(path, "r+") as op:
lines = op.readlines()
for line in lines:
if line == "\n":
op.write(line.rstrip("\n"))
4 Réponses :
Le moyen le plus simple serait de garder une trace si vous avez vu une ligne vide em>, puis écrivez-en une juste avant d'écrire une ligne non em> -empty. Ceci réduit toute séquence de lignes vides à une seule ligne vide et écrit cette seule ligne juste avant d'écrire une ligne non vide ou la fin du fichier. Lorsque Si vous souhaitez conserver plusieurs lignes vides au milieu du fichier, accumulez la séquence de vide Lignes dans pré code> est la chaîne vide, écrivez-la est un non-op. P>
PRE CODE> Comme vous les trouvez, et à la fin du fichier, écrivez uniquement une seule ligne vide (plutôt que
pré code>) si
pré code > n'est pas vide. p>
Vous pouvez essayer d'utiliser le compteur () code>.
import os
from pathlib import Path
from collections import Counter
def remove_blanks():
dirname = os.path.dirname(os.path.abspath(__file__))
path: Path = Path(os.path.join(dirname, "data.csv"))
with open(path, "r+") as op:
lines = op.readlines()
for line in lines:
count = Counter()
# Add 1 for every time word appears in line
for word in line:
count[word] += 1
# Change the number of newlines to 1
if count['\n'] > 1:
count['\n'] = 1
# Returns list with the number of elements
line = list(count.elements())
oups, ne réécrivez jamais le fichier que vous lisez: il est probable que cela ne fonctionnera probablement pas ou mènera au mieux à un cauchemar de maintenance.
Si le fichier est suffisamment petit pour tenir dans la mémoire principale, ce léger changement de votre Le code pourrait suffire: p>
Merci pour la pointe sur l'ouverture du fichier! Je l'ai maintenant essayé mais il semble laisser 2 consécutives \ n peu importe la fin du fichier
J'ai réussi à résoudre ce problème, avec ce code: Il peut supprimer chaque nouvelle ligne de l'excès, peu importe où il se trouve dans le fichier. P> Merci à tous ceux qui ont essayé de m'aider! P> p>
Voulez-vous supprimer des lignes vides supplémentaires de toute séquence i> ou juste celle à la fin du fichier? (Cela fait une différence, car vous ne saurez pas qu'une séquence se produit à la fin du fichier jusqu'à ce que vous atteindre i> la fin du fichier, vous ne pouvez donc pas prendre la décision d'écrire ou de Passer immédiatement.)
@cheppner je ne suis intéressé qu'à la fin du fichier.