参考文献を保存する自動生成された参考文献ファイルがあります。生成されたファイルの citekey の形式はxxxxx:2009tb
. そのようなパターンを検出し、citekey フォームを に変更するプログラムを作成する方法はありxxxxx:2009
ますか?
2 に答える
1
どの式と一致させたいかはよくわかりませんが、示されているように import re と re.sub を使用して、正規表現ですべてを構築できます。[0-9]*4 は正確に 4 つの数字に一致します。(編集、提案を組み込むため)
import re
inf = 'temp.txt'
outf = 'out.txt'
with open(inf) as f,open(outf,'w') as o:
all = f.read()
all = re.sub("xxxxx:[0-9]*4tb","xxxxx:tb",all) # match your regex here
o.write(all)
o.close()
于 2012-11-07T11:37:44.553 に答える
0
実際には、参照の年の後の 2 文字を削除したいだけです。コロンの後に 4 つの数字と 2 つの文字が続く参照を一意に識別できると仮定すると、次の正規表現は機能します (少なくとも、このサンプル コードでは機能しています)。
import re
s = """
according to some works (newton:2009cb), gravity is not the same that
severity (darwin:1873dc; hampton:1956tr).
"""
new_s = re.sub('(:[0-9]{4})\w{2}', r'\1', s)
print new_s
説明: 「コロンの:
後に 4 つの数字と[0-9]{4}
それに続く任意の 2 つの「単語」文字を一致さ\w{2}
せます。括弧は保持したい部分だけをキャッチr'\1'
し、最初の (およびのみ) 括弧のグループ 文字列の前にあるのは、エスケープ シーケンスとしてではなく生の文字列としてr
解釈する必要があるためです。\1
お役に立てれば!
于 2012-11-08T15:27:10.013 に答える