2 votes

Regex + Python - Supprimer toutes les lignes commençant par un *

Je souhaite supprimer toutes les lignes d'un fichier donné qui commencent par un *. Par exemple, ce qui suit :

* This needs to be gone
But this line should stay
*remove 
* this too
End

Il devrait générer ceci :

But this line should stay
End

Ce que je dois faire en fin de compte, c'est ce qui suit :

  1. Supprimer tout le texte à l'intérieur des parenthèses et crochets (parenthèses/crochets inclus),
  2. Comme indiqué ci-dessus, supprimez les lignes commençant par ''.

Jusqu'à présent, j'ai pu répondre à la première question en procédant comme suit : re.sub(r'[.?]|(.*?)', '', fileString) . J'ai essayé plusieurs choses pour le numéro 2, mais je finis toujours par enlever des choses que je ne veux pas.


Solution 1 (pas de regex)

>>> f = open('path/to/file.txt', 'r')
>>> [n for n in f.readlines() if not n.startswith('*')]

Solution 2 (expression rationnelle)

>>> s = re.sub(r'(?m)^\*.*\n?', '', s)

Merci à tous pour votre aide.

5voto

Ωmega Points 17702

Utilisation d'une expression rationnelle (regex)

s = re.sub(r'(?m)^\*.*\n?', '', s) 

Vérifier cette démonstration .

1voto

kreativitea Points 1283

Vous n'avez pas besoin de regex pour cela.

text = file.split('\n') # split everything into lines.

for line in text:
    # do something here

N'hésitez pas à nous contacter si vous avez besoin d'aide.

1voto

David S Points 2259

Vous devriez vraiment donner plus d'informations ici. Au minimum, la version de python que vous utilisez et un extrait de code. Cela dit, pourquoi avez-vous besoin d'une expression régulière ? Je ne vois pas pourquoi vous ne pourriez pas simplement utiliser startswith.

Ce qui suit fonctionne pour moi avec Python 2.7.3

s = '* this line gotta go!!!'
print s.startswith('*')

>>>True

1voto

garnertb Points 4775
>>> f = open('path/to/file.txt', 'r')
>>> [n for n in f.readlines() if not n.startswith('*')]
['But this line should stay\n', 'End\n']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X