简体   繁体   中英

Regex + Python - Remove all lines beginning with a *

I want to remove all lines from a given file that begin with a *. So for example, the following:

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

Should generate this:

But this line should stay
End

What I ultimately need to do is the following:

  1. Remove all text inside parenthesis and brackets (parenthesis/brackets included),
  2. As mentioned above, remove lines starting with ''.

So far I was able to address #1 with the following: re.sub(r'[.?]|(.*?)', '', fileString) . I tried several things for #2 but always end up removing things I don't want to


Solution 1 (no regex)

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

Solution 2 (regex)

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

Thanks everyone for the help.

Using regex >>

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

Check this demo .

You don't need regex for this.

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

for line in text:
    # do something here

Let us know if you need any more help.

You should really give more information here. At the minimum, what version of python you are using and a code snippet. But, that said, why do you need a regular expression? I don't see why you can't just use startswith.

The following works for me with Python 2.7.3

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

>>>True
>>> 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']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM