参考文献を保存する自動生成された参考文献ファイルがあります。生成されたファイルの 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   に答える