Comment imprimer toutes les lignes d'un fichier sauf ie commentées avec ("#") en python?
Exemple de données:
with open('file.txt','r') as f:
b=[line.strip().split() for line in f if not line.startswith(('#'))]
Ma tentative: p >
World is suffering from the penidemic due to corona. #Stay safe #stay home focus on boosting immunity#stay fit Pray for all the corona warriors.
La sortie du code contient 'immunity # safe'
Je veux ignorer le texte commenté. Je ne sais pas comment continuer.Veuillez aider, merci
3 Réponses :
Essayez peut-être d'utiliser une expression régulière comme #. * Cela correspondra à tout sauf à une nouvelle ligne après un caractère #.
Vous pouvez utiliser str.split () avec le paramètre maxsplit = 1 .
Par exemple:
['World is suffering from the penidemic due to corona.', 'focus on boosting immunity', 'Pray for all the corona warriors.']
Impressions:
data = []
with open('file.txt', 'r') as f_in:
for line in f_in:
line = line.split('#', maxsplit=1)[0].strip()
if line:
data.append(line)
print(data)
Merci beaucoup monsieur:)
J'utiliserais Regex pour cela, l'expression r "(#. *?) \ n" sélectionne les commentaires et fonctionne correctement sur regex101.com Python Flavor, Regex v43 , mais je ne sais pas comment cela se traduit en Python, donc ce n'est malheureusement pas très utile. Cela fonctionne en regroupant tout, du caractère # à une nouvelle ligne
Votre code vérifie uniquement si une ligne commence par un
#, mais il semble également qu'une ligne contienne un#à mi-chemin pour tout éliminer au-delà de ce point - non?... donc, comme quelques points de départ à utiliser vous-même: vous pouvez utiliser
split ('#')pour diviser une ligne en morceaux, puis ne prendre que le premier morceau (donc,split ('#') [0]). Ou vous pouvez utiliser une expression régulière, avecre.sub ()ou similaire.BTW, pourquoi utilisez-vous
strip ()sans arguments? Est-ce vraiment la bonne chose de supprimer les espaces blancs de début et de fin? (Je ne vois rien dans vos exigences déclarées qui appelle à le faire).... de même, je ne sais pas pourquoi
split ()est la bonne chose non plus.@charles Duffy merci beaucoup monsieur