まで、私はこのファイルを持って置き換えます正規表現は、コメント
# blah blah blah DO NOT REPLACE blah blah
blah blah blah
blah blah REPLACE # comment comment
REPLACE blah blah
コメントは「#」で始まる、私はそれがコメント内ではないキーワードを交換したいです。
私はPythonを使用していますが、どうすればいいですか?
まで、私はこのファイルを持って置き換えます正規表現は、コメント
# blah blah blah DO NOT REPLACE blah blah
blah blah blah
blah blah REPLACE # comment comment
REPLACE blah blah
コメントは「#」で始まる、私はそれがコメント内ではないキーワードを交換したいです。
私はPythonを使用していますが、どうすればいいですか?
正規表現を使用しないでください。その代わり、#
文字で行を分割し、ちょうど最初の部分で作業:
>>> 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
の発生を交換し、全体を再参加するために(おそらく別のリストの内包表記を使用して)、コードを書くことができますもの。
私はNiklas Bに同意しますが、問題に対して正規表現は必要ありません。
あなたはこのようないくつかを使用することができます:あなたは
>>> text = """# blah blah blah DO NOT REPLACE blah blah
... blah blah blah
... blah blah REPLACE # comment comment
... REPLACE blah blah"""
を持っていると置換 "REPLACE" にしたい場合は、関数fを使用することができます '%%%%' の、
>>> 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')])
、その後、 like:
>>> print f(text, 'REPLACE', '%%%%')
# blah blah blah DO NOT REPLACE blah blah
blah blah blah
blah blah %%%% # comment comment
%%%% blah blah
コードはどこですか? –
'str ="男の子、私は文字列に '#'を使うことができてうれしいですか? –