python - 如何在 python 2.7 中使用正则表达式在列表中插入换行符?
问题描述
我正在尝试从 OCR 扫描中制作有序数据集。我通过制作一个包含所有“单位”的列表来预处理结果 - 用换行符分隔。这看起来像这样:
[' 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
用这个正则表达式标识的所有模式之后插入换行符 ():
r" ([0-9]+[-][0-9])"
所以结果应该是,例如:
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
我试图创建一个循环,其中所有匹配模式都替换为相同的匹配模式+新行。但这似乎只工作一次,所以看起来循环出了点问题。有谁知道具体出了什么问题?
#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)
结果(包括测试打印):
[ ' 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
解决方案
要获得 AddLine 的值,您必须print(AddLine)
在相同的缩进级别下使用AddLine = re.sub(r" ([0-9]+[-][0-9]+)", '\g<1>\n', line)
如果您希望捕获组从新行开始,您可以\n
在捕获组之前添加:
\n\g<1>\n
请注意,在模式中,您还可以匹配没有字符类的连字符:
([0-9]+-[0-9]+)
推荐阅读
- python - 安装bintrees包的问题
- three.js - 如何使planehelper在不是原点的点旋转
- java - 如何理解接口EventExecutor中的EventLoop方法?
- php - 如何获得集合中元素的所有可能组合?(电源组)
- html - 如何将进度条放在按钮的底部?
- amazon-web-services - 活动与 AWS Step Functions 中的新回调模式功能之间的区别
- ios - 存储键值对的数据结构,其中值可以在 Objective-C 中修改
- java - spring-boot中的自定义ConstraintViolationException
- mysql - 如何在 Codeigniter 中运行以分号分隔的多个查询
- laravel - 如何将转发器字段中的每个字段保存为模型