以下の例のように、IDを自動的に1、2などに再番号付けする方法(正規表現またはその他のオプション)はありますか?
<comment id="53" status="new">
<comment id="54" status="new">
<comment id="55" status="new">
これに:
<comment id="1" status="new">
<comment id="2" status="new">
<comment id="3" status="new">
以下のコメントのリンクからPythonスクリプトを使用しようとしました。上記のコード用に調整しましたが、次のようになります。
def calculate(match):
return 'comment id="%s"' % (match.group(1), str(int(match.group(2))-52))
editor.rereplace('comment id="([0-9]+)"', calculate)
それは何もしません。どうして?私が間違っているのは何ですか?
以下はPython 3.6スクリプトです。ファイル名を変更する必要があります。将来ファイルの構造が変更された場合、正規表現にもいくつかの調整が必要になる可能性がありますが、今のところ実行する必要があります。ファイルの行数に関係なくスムーズです。
import re
file = open('my_file_1.txt', 'r+')
i=1
new_file_content=""
for line in file:
p = re.compile('(\d+)')
new_file_content += p.sub(str(i), line)
i+=1
file.seek(0)
file.truncate()
file.write(new_file_content)
file.close()
# REFERENCES
# [1] https://docs.python.org/3/tutorial/inputoutput.html
# [2] https://docs.python.org/3/howto/regex.html