2

我想从给定文件中删除所有以 * 开头的行。例如,以下内容:

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

应该生成这个:

But this line should stay
End

我最终需要做的是:

  1. 删除括号和括号内的所有文本(包括括号/括号),
  2. 如上所述,删除以''开头的行。

到目前为止,我能够使用以下内容解决#1 re.sub(r'[.?]|(.*?)', '', fileString):. 我为#2尝试了几件事,但总是最终删除了我不想删除的东西


解决方案 1(无正则表达式)

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

解决方案 2(正则表达式)

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

感谢大家的帮助。

4

4 回答 4

5

使用正则表达式 >>

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

检查这个演示

于 2012-10-17T00:15:33.033 回答
1

你真的应该在这里提供更多信息。至少,您使用的 python 版本和代码片段。但是,也就是说,为什么需要正则表达式?我不明白为什么你不能只使用startswith。

以下适用于 Python 2.7.3

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

>>>True
于 2012-10-17T00:10:31.570 回答
1

你不需要正则表达式。

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

for line in text:
    # do something here

如果您需要更多帮助,请告诉我们。

于 2012-10-17T00:08:42.677 回答
1
>>> 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']
于 2012-10-17T00:13:49.940 回答