正規表現を使ってファイル内の複数の行を削除したいと思います。私は、例えばhost_name
のようなホスト名を選択するとpythonでregexを使ってテキストファイル内の複数行を削除するには?
host host_name {
# comment (optional)
hardware ethernet 01:22:85:EA:A8:5D;
fixed-address 192.168.107.210;
}
host another_host_name {
# comment (optional)
hardware ethernet 01:22:85:EA:A8:5D;
fixed-address 192.168.107.210;
}
基本的には、それはそれを持っているラインを検出してまで、それの後にすべての行を削除します:
私はこのようなものを使用してファイルを持っていますそれは最初{
遭遇:
#before
host host_name {
# comment (optional)
hardware ethernet 01:22:85:EA:A8:5D;
fixed-address 192.168.107.210;
}
host another_host_name {
# comment (optional)
hardware ethernet 01:22:85:EA:A8:5D;
fixed-address 192.168.107.210;
}
#after
host another_host_name {
# comment (optional)
hardware ethernet 01:22:85:EA:A8:5D;
fixed-address 192.168.107.210;
}
私たちはm = search('r"^host.*}', line)
のようなものを使用すると思いますが、それは複数行のためではないラインのものでラインで働いています。
def remove(filename, hostname):
with open(os.path.abspath("app/static/DATA/{}".format(filename)), "a") as f:
for line in f:
m = search('r"^hostname.*}', line, re.MULTILIGNE)
if m:
#we delete the bloc, I don't know how to do it though
このようにして始めますか?
これは非常に乱雑になるだろう、そこに行かないでください。 'dhcp.conf'に完全な吹き抜けのパーサーを見つけてください:https://pypi.python.org/pypi/iscconf https://pypi.python.org/pypi/iscpy/1.0.1 https://pypi.python .org/pypi/bicop/ – Pavel
[マルチラインモード](https://docs.python.org/3/library/re.html#re.MULTILINE)を有効にしましたか? – Kevin
@Pavel私は初心者です。私はそれらを一度も使用しませんでした。少なくとも正規表現を使う前に、私はそれが最善のものではないかもしれないことを知っていますが、その方法を提案しました。 – Draga