python在文本中使用正则表达式区分引用和方程
我试图删除一段文本中的所有引用-它们包含在括号中。因此,最简单的方法是删除括号中的所有内容。。。但是括号里的一些东西很重要,比如方程。。。 所以我想我可以去掉所有括号中的“et al.”,但不是所有的参考文献都有et al。。。。 有谁能告诉我,谁应该使用python表达式来区分以“(作者[可能等人],年份)”格式指定的方程式和引用 一致删除包含括号的内容的示例:python在文本中使用正则表达式区分引用和方程,python,regex,Python,Regex,我试图删除一段文本中的所有引用-它们包含在括号中。因此,最简单的方法是删除括号中的所有内容。。。但是括号里的一些东西很重要,比如方程。。。 所以我想我可以去掉所有括号中的“et al.”,但不是所有的参考文献都有et al。。。。 有谁能告诉我,谁应该使用python表达式来区分以“(作者[可能等人],年份)”格式指定的方程式和引用 一致删除包含括号的内容的示例: file=open("polymer_model.txt", "r") mystring = file.read() def a(t
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.+表示至少有一个逗号,并且?告诉正则表达式要懒惰,不要贪婪:(检查参考)?
与我的错误+
无关。感谢您的澄清。