我有一个自动生成的参考书目文件来存储我的参考文献。生成文件中的 citekey 格式为xxxxx:2009tb
. 有没有办法让程序检测到这种模式并将 citekey 形式更改为xxxxx:2009
?
问问题
471 次
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
您实际上只想在参考中删除年份之后的两个字母。假设我们可以将引用唯一标识为一个冒号,后跟四个数字和两个字母,那么下面的正则表达式就可以工作(至少它在这个示例代码中是有效的):
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
解释:“匹配一个冒号:
,后跟四个数字[0-9]{4}
,后跟任意两个“单词”字符\w{2}
。括号仅捕获您要保留的部分,r'\1'
这意味着您将每个完整匹配替换为第一个 (并且唯一的) 括号组。r
字符串之前存在,因为有必要将其解释\1
为原始字符串,而不是转义序列。
希望这可以帮助!
于 2012-11-08T15:27:10.013 回答