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

これには正規表現は必要ありません。

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

for line in text:
    # do something here

さらにサポートが必要な場合はお知らせください。

于 2012-10-17T00:08:42.677 に答える
1

ここでもっと情報を提供する必要があります。少なくとも、使用している Python のバージョンとコード スニペット。しかし、そうは言っても、なぜ正規表現が必要なのでしょうか? startswith だけを使用できない理由がわかりません。

以下は、Python 2.7.3で機能します

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

>>>True
于 2012-10-17T00:10:31.570 に答える
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 に答える