python在文本

时间:2017-03-14 15:38:11

标签: python regex

我试图删除一段文本中的所有引用 - 它们包含在括号中。因此,最简单的方法是一致地删除括号中的所有内容......但括号中的某些内容很重要,例如方程... 所以我想我可以删除所有包含“ et al。”的括号,但并非所有引用都包含其中的等等.... 任何人都可以告诉我谁使用python表达式来区分以“(作者[可能等人],年)”格式指定的方程和参考

一致删除括号内容的示例:

file=open("polymer_model.txt", "r")
mystring = file.read()
def a(test_str):
    ret = ''
    skip = 0
    for i in test_str:
        if i == '(':
            skip += 1
        elif i == ')'and skip2c > 0:
            skip -= 1
        elif skip == 0:
            ret += i
    return ret


x = a(mystring)

尝试删除所有括号内容的示例,其中包含“et al::

x=re.sub(r'(\w+ et al.\)s?','',x)
  

假设平均扭转能量等于(1/2)kT   我们还有 Teff =(C / kl)。(rmsd(Tw))2 (Munteanu等,1998; Olson,1996; Olson和Zhurkin,2000)。然而,根据其他更喜欢等式的研究,这个模型有些简陋:wαexp(-E / kT)(Schlick,1995)

应该是:

  

假设平均扭转能量等于(1/2)kT,我们也有Teff =(C / kl)。(rmsd(Tw))2。然而,根据其他更喜欢这个等式的研究,这个模型有些简陋:wαexp(-E / kT)

1 个答案:

答案 0 :(得分:1)

我会尝试以下正则表达式:

\([A-Z]\w+[^\)]+?, (18|19|20)[0-9]{2}\)
  • \(括号字符
  • [A-Z] 作者应以capitale letter开头
  • \ w + 其余作者姓名
  • [^ \]] +?除结束括号外的所有其他内容
  • ,(19 | 20)[0-9] {2} 逗号,然后是年份。如果您在1900年之前发行了图书,则必须添加年份
  • \)括号char

但它只是一个很好的猜测。可能存在与此正则表达式匹配的公式或不匹配的报价。但我认为, year - 部分应该在大多数情况下都这样做。

您可以在此处尝试更多示例: https://regex101.com/r/AKmfdr/2