如何在python 2.7中使用regex在列表中插入换行符? [英] How to insert a newline in list using regex in python 2.7?
问题描述
我正在尝试通过OCR扫描制作有序的数据集.我通过制作一个包含所有单位"的列表(用换行符分隔)对结果进行了预处理. 看起来像这样:
I am trying to make an ordered dataset out of an OCR scan. I have preprocessed the result by making a list which contains all 'units' - separated by newlines. This looks like this:
[' 525-11 Prof.Dr.F.J.A.Kreuzer, Nijmegen onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte 17.500\n',
' 527-7 Dr.G.Buyze, Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400\n',
' 527-8 Prof. Dr. Elisabeth P.Steyn Parv\xc3\xa9, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam s 5.400\n',
' 532-7 Dr.J.K. Sch\xc3\xb6nfeld, Rotterdam onderzoek over de rol van de L-fase van bacteri\xc3\xabn bij chronische en recidiverende ziekten (1962) f 3.100\n',
' 532-8 A.G.Schuitemaker, Heiloo onderzoek naar het lytisch vermogen van bacteriofagen voor mycobacteri\xc3\xabn f 2.000\n',
' 542-13 Dr.B.Leijnse en Dr.H.M. van Praag, Rotterdam bestudering van het werkingsmechanisme van de anti-depressieve hydrazinen, in bio chemisch en psychiatrisch-psychologisch opzicht f 16.000\n',
' 547-7 Dr.H.K.A. Visser, Groningen onderzoek over de werking van het antidiuretische hormoon en de regulatie van de centrale afgifte van dit hormoon gedurende de kinderleeftijd (1962) s 9.600\n',
' 548-4 Dr.F.Schwarz, Utrecht onderzoek naar de invloed van Exophthalmos Producing Substance op bindweefsel s 13.000\n',
' 562-8 Prof. Dr.J.Droogleever Fortuyn, Groningen onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100\n',
' '
]
我现在想在用此正则表达式标识的所有模式之后插入换行符(\n
):
I now want to insert newlines (\n
) after all the patterns identified with this regular expression:
r" ([0-9]+[-][0-9])"
所以结果应该是,例如:
So the result should be, for example:
525-11
Prof.Dr.F.J.A.Kreuzer, Nijmegen onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte 17.500
527-7 Dr.G.Buyze, Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400
527-8 Prof. Dr. Elisabeth P.Steyn Parv, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam s 5.400
我试图进行一个循环,在该循环中,所有匹配模式都用相同的匹配模式+新行替换.但这似乎只能一次执行,因此循环似乎出了点问题.有谁知道到底出了什么问题?
I tried to make a loop in which all matching patterns are substituted with the same matching pattern + a new line. But this only seems to work one single time, so it looks like something goes wrong with the loop. Does anyone have an idea what specifically goes wrong?
#import Regular Expression library
import re
#Open a the preprosseced text file
g = open('outputtest2.txt', 'r')
h = open('outputtest3.txt', 'w')
SingularStringTextDOC = g.readlines()
aanvr = re.compile(r" ([0-9]+[-][0-9])")
#Test how the string works
print(SingularStringTextDOC)
#Make a Loop in which in every line in the text of outputtest1.txt is
searched for submission number
for line in SingularStringTextDOC:
if aanvr.match(line):
AddLine = re.sub(r" ([0-9]+[-][0-9]+)", '\g<1>\n', line)
#test result
print(AddLine)
#create a new file in which the new lines are added
IsolatedSubmissionText_Aanvrnum = h.write(AddLine)
结果(包括测试打印):
The result (including test prints):
[ ' 515-16 Prof. Dr.D.B.Kroon, Amsterdam onderzoek naar samenstelling en structuur van ooglens-ciwitten f 16.900\n',
" 521-21 Prof.Dr.E.C.Slater, Amsterdam onderzoek over aard en werkingsmechanisme van de zogenaamde 'relaxing factor' (1960 1962) f 12.000\n",
' 525-11 Prof.Dr.F.J.A.Kreuzer, Nijmegen onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte 17.500\n',
' 527-7 Dr.G.Buyze, Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400\n',
' 527-8 Prof. Dr. Elisabeth P.Steyn Parv\xc3\xa9, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam s 5.400\n',
' 532-7 Dr.J.K. Sch\xc3\xb6nfeld, Rotterdam onderzoek over de rol van de L-fase van bacteri\xc3\xabn bij chronische en recidiverende ziekten (1962) f 3.100\n',
' 532-8 A.G.Schuitemaker, Heiloo onderzoek naar het lytisch vermogen van bacteriofagen voor mycobacteri\xc3\xabn f 2.000\n',
' 542-13 Dr.B.Leijnse en Dr.H.M. van Praag, Rotterdam bestudering van het werkingsmechanisme van de anti-depressieve hydrazinen, in bio chemisch en psychiatrisch-psychologisch opzicht f 16.000\n',
' 547-7 Dr.H.K.A. Visser, Groningen onderzoek over de werking van het antidiuretische hormoon en de regulatie van de centrale afgifte van dit hormoon gedurende de kinderleeftijd (1962) s 9.600\n',
' 548-4 Dr.F.Schwarz, Utrecht onderzoek naar de invloed van Exophthalmos Producing Substance op bindweefsel s 13.000\n',
' 562-8 Prof. Dr.J.Droogleever Fortuyn, Groningen onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100\n', ' ']
562-8
Prof. Dr.J.Droogleever Fortuyn, Groningen onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100
推荐答案
我猜测您可能只是想在表达式中添加单词边界,所以似乎还缺少+
:
I'm guessing that you might simply want to add word boundaries to your expression, also a +
seems to be missing:
\s\b[0-9]+-[0-9]+\b
虽然不确定.
import re
l = [' 525-11 Prof.Dr.F.J.A.Kreuzer, Nijmegen onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte 17.500\n',
' 527-7 Dr.G.Buyze, Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400\n',
' 527-8 Prof. Dr. Elisabeth P.Steyn Parv\xc3\xa9, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam s 5.400\n',
' 532-7 Dr.J.K. Sch\xc3\xb6nfeld, Rotterdam onderzoek over de rol van de L-fase van bacteri\xc3\xabn bij chronische en recidiverende ziekten (1962) f 3.100\n',
' 532-8 A.G.Schuitemaker, Heiloo onderzoek naar het lytisch vermogen van bacteriofagen voor mycobacteri\xc3\xabn f 2.000\n',
' 542-13 Dr.B.Leijnse en Dr.H.M. van Praag, Rotterdam bestudering van het werkingsmechanisme van de anti-depressieve hydrazinen, in bio chemisch en psychiatrisch-psychologisch opzicht f 16.000\n',
' 547-7 Dr.H.K.A. Visser, Groningen onderzoek over de werking van het antidiuretische hormoon en de regulatie van de centrale afgifte van dit hormoon gedurende de kinderleeftijd (1962) s 9.600\n',
' 548-4 Dr.F.Schwarz, Utrecht onderzoek naar de invloed van Exophthalmos Producing Substance op bindweefsel s 13.000\n',
' 562-8 Prof. Dr.J.Droogleever Fortuyn, Groningen onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100\n',
' '
]
regex = r"(\s\b[0-9]+-[0-9]+\b)"
subst = "\\1\\n"
for index,item in enumerate(l):
l[index] = re.sub(regex, subst, item)
print(l)
输出
['525-11 \ nF.J.A.Kreuzer博士,奈梅亨·翁德佐克(Nijmegen onderzoek)遇见了跋涉 fysiologie van ademhaling和bloedsomloop op grote hoogte 17.500 \ n','527-7 \ n乌兹别克斯坦大学的G.Buyze博士9.400 \ n','527-8 \ n教授 伊丽莎白·P·施泰因·帕尔维(Elisabeth P.SteynParvé),乌得勒支(Utrecht)onderzoek 维生素D合成的范维祖伦(thiaminc voor de synthese van vetzuren) 5.400 \ n','532-7 \ n Dr.J.K. Schönfeld,鹿特丹onderzoek在de rol van de L-fase vanbacteriÃnn bij chronische en recidiverende ziekten(1962)f 3.100 \ n','532-8 \ n A.G. Schuitemaker,Heiloo onderzoek naar het lytisch vermogen van细菌细菌素 分枝杆菌n = 2.000 \ n','542-13 \ n Dr.B.Leijnse和Dr.H.M.货车 鹿特丹的普拉格(Praag)效仿范·赫特·沃金斯(van het werkingsmechanisme van de) 生物化学中的抗抑郁肼 Dr.H.K.A. f.16.000 \ n','547-7 \ n psychiatrisch-psychologisch opzicht. 威瑟(Visser),格罗宁根(Groningen onderzoek)在德韦金·范·赫特(Diet vantis)的抗利尿术上 hormoon en de regulatie范德中心afgifte van dit hormoon gedurende de kinderleeftijd(1962)s 9.600 \ n','548-4 \ n F.Schwarz博士,乌得勒支onderzoek naar de invloed van Exophthalmos 产生物质op bindweefsel s 13.000 \ n','562-8 \ n Prof. Dr.J.Droogleever Fortuyn,Groningen onderzoek naar bouw en functie van de middenhersenen(1960-1962)f 13.100 \ n','']
[' 525-11\n Prof.Dr.F.J.A.Kreuzer, Nijmegen onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte 17.500\n', ' 527-7\n Dr.G.Buyze, Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400\n', ' 527-8\n Prof. Dr. Elisabeth P.Steyn Parvé, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam s 5.400\n', ' 532-7\n Dr.J.K. Schönfeld, Rotterdam onderzoek over de rol van de L-fase van bacteriën bij chronische en recidiverende ziekten (1962) f 3.100\n', ' 532-8\n A.G.Schuitemaker, Heiloo onderzoek naar het lytisch vermogen van bacteriofagen voor mycobacteriën f 2.000\n', ' 542-13\n Dr.B.Leijnse en Dr.H.M. van Praag, Rotterdam bestudering van het werkingsmechanisme van de anti-depressieve hydrazinen, in bio chemisch en psychiatrisch-psychologisch opzicht f 16.000\n', ' 547-7\n Dr.H.K.A. Visser, Groningen onderzoek over de werking van het antidiuretische hormoon en de regulatie van de centrale afgifte van dit hormoon gedurende de kinderleeftijd (1962) s 9.600\n', ' 548-4\n Dr.F.Schwarz, Utrecht onderzoek naar de invloed van Exophthalmos Producing Substance op bindweefsel s 13.000\n', ' 562-8\n Prof. Dr.J.Droogleever Fortuyn, Groningen onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100\n', ' ']
如果您在 regex101.com 的右上方面板上对该表达式进行了解释,希望对其进行探索/简化/修改,并在此链接中,您可以观看如何如果您愿意,它可以与一些示例输入匹配.
The expression is explained on the top right panel of regex101.com, if you wish to explore/simplify/modify it, and in this link, you can watch how it would match against some sample inputs, if you like.
这篇关于如何在python 2.7中使用regex在列表中插入换行符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!