1

私はこのファイルを持っています:

 # blah blah blah DO NOT REPLACE blah blah
 blah blah blah
 blah blah REPLACE # comment comment
 REPLACE blah blah

コメントが「#」で始まるので、コメント外のキーワードを置き換えたい。

Python を使用していますが、これを行うにはどうすればよいですか?

4

2 に答える 2

3

正規表現は使用しないでください。代わりに、#文字で行を分割し、最初の部分だけを操作します。

>>> lines = '''
...  # blah blah blah DO NOT REPLACE blah blah
...  blah blah blah
...  blah blah REPLACE # comment comment
...  REPLACE blah blah
... '''
>>> [l.split('#', 1) for l in lines.split('\n')]
[[''], 
 [' ', ' blah blah blah DO NOT REPLACE blah blah'], 
 [' blah blah blah'], 
 [' blah blah REPLACE ', ' comment comment'], 
 [' REPLACE blah blah'], ['']]

コードを記述して (おそらく別のリスト内包表記を使用して) REPLACE、最初の部分の の出現を置き換え、全体を再結合することができます。

于 2012-04-17T21:39:19.847 に答える
0

Niklas Bに同意します。問題に正規表現は必要ありません。

次のようなものを使用できます。

>>> f = lambda text, sub, repl: \
... '\n'.join([line.split('#')[0].replace(sub, repl) + '#' + line.split('#',1)[1] \
... if '#' in line else line.replace(sub, repl)
... for line in text.split('\n')])

そして、あなたが持っている場合

>>> text = """# blah blah blah DO NOT REPLACE blah blah
...  blah blah blah
...  blah blah REPLACE # comment comment
...  REPLACE blah blah"""

「%%%%」の「REPLACE」を置き換えたい場合は、次のように関数 f を使用できます。

>>> print f(text, 'REPLACE', '%%%%')
# blah blah blah DO NOT REPLACE blah blah
 blah blah blah
 blah blah %%%% # comment comment
 %%%% blah blah
于 2012-04-18T00:13:12.590 に答える