Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python在文本中使用正则表达式区分引用和方程_Python_Regex - Fatal编程技术网

python在文本中使用正则表达式区分引用和方程

python在文本中使用正则表达式区分引用和方程,python,regex,Python,Regex,我试图删除一段文本中的所有引用-它们包含在括号中。因此,最简单的方法是删除括号中的所有内容。。。但是括号里的一些东西很重要,比如方程。。。 所以我想我可以去掉所有括号中的“et al.”,但不是所有的参考文献都有et al。。。。 有谁能告诉我,谁应该使用python表达式来区分以“(作者[可能等人],年份)”格式指定的方程式和引用 一致删除包含括号的内容的示例: file=open("polymer_model.txt", "r") mystring = file.read() def a(t

我试图删除一段文本中的所有引用-它们包含在括号中。因此,最简单的方法是删除括号中的所有内容。。。但是括号里的一些东西很重要,比如方程。。。 所以我想我可以去掉所有括号中的“et al.”,但不是所有的参考文献都有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)
尝试删除包含“等:”的所有括号内内容的示例:

x=re.sub(r'(\w+ et al.\)s?','',x)
假设平均扭转能量等于(1/2)kT ,我们还有Teff=(C/kl)。(rmsd(Tw))2(Munteanu等人,1998年;奥尔森,1996年;奥尔森和朱尔金,2000年)。然而,根据倾向于方程的其他研究,该模型有些初级:w∝经验(−E/kT)(Schlick,1995年)

应该是:

假设平均扭转能量等于(1/2)kT,我们也有Teff=(C/kl)。(rmsd(Tw))2。然而,根据其他更倾向于方程w的研究,该模型有些初级∝经验(−E/kT)


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

\([A-Z]\w+[^\)]+?, (18|19|20)[0-9]{2}\)
  • \(括号字符
  • [A-Z]作者应以大写字母开头
  • \w+作者姓名的其余部分
  • [^\)]+?除右括号外的所有其他内容
  • ,(19 | 20)[0-9]{2}逗号,后跟年份。如果您有1900年之前发行的书籍,则必须添加年份
  • \)括号字符
但这只是一个很好的猜测。可能有一个公式与这个正则表达式匹配,也可能有一个引用不匹配。但我认为在大多数情况下,
,year
-部分应该这样做

您可以在此处尝试更多示例:

你尝试过什么,出了什么问题?我仍然不清楚你想删除什么和保留什么。请编辑以给出我正在使用的代码示例,我们无法告诉你如何使用python来执行此操作,除非你能告诉一个人如何执行此操作。你使用什么标准来决定哪些内容被删除,哪些不被删除?例如le,要删除的数据是否总是以四位数的年份结束?方程式中是否会出现逗号?所有引用都至少包含一个逗号,因此您可以利用该细节。是否
[^\]+?
[^\]*
相同?@tadhgmdonald Jensen no.+表示至少有一个逗号,并且?告诉正则表达式要懒惰,不要贪婪:(检查参考)
与我的错误
+
无关。感谢您的澄清。