0

参考文献を保存する自動生成された参考文献ファイルがあります。生成されたファイルの citekey の形式はxxxxx:2009tb. そのようなパターンを検出し、citekey フォームを に変更するプログラムを作成する方法はありxxxxx:2009ますか?

4

2 に答える 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 に答える