[英]Extract a string between other two in Python
我正在尝试从 fdf(PDF 注释文件)中提取注释。 实际上,这是在其他两个之间提取一个字符串。 我做了以下事情:
import re
import os
os.chdir("currentworkingdirectory")
archcom =open("comentarios.fdf", "r")
cadena = archcom.read()
cadena = "\n215 0 obj\n<</D[2.0 2.0]/S/D>>\nendobj\n216 0 obj\n<</D[2.0 2.0]/S/D>>\nendobj\n217 0 obj\n<</D[2.0 2.0]/S/D>>\nendobj\n218 0 obj\n<</W 3.0>>\nendobj\n219 0 obj\n<</W 3.0>>\nendobj\ntrailer\n<</Root 1 0 R>>\n%%EOF\n"
a = re.findall(r"nendobj(.*?)W 3\.0",cadena)
试图获得:
a = "n216 0 obj\n<</D[2.0 2.0]/S/D>>\nendobj\n217 0 obj\n<</D[2.0 2.0]/S/D>>\nendobj\n218 0 obj\n<<"
但我得到了:
a = []
问题出在a = re.findall(r"nendobj(.*?)W 3\\.0",cadena)
但我不知道在哪里。 我尝试了很多组合都没有成功。
我很感激任何评论。
问候
在我看来,有两个问题:
a) 您正在寻找nendobj
,但 N 实际上是换行符\\n
。 因此,您也不会在输出中获得前导 N,因为没有 N。
b) 由于您要查找的文本跨越了一些换行符,因此您需要re.DOTALL
标志
最终代码:
a = re.findall("endobj(.*?)W 3\.0",cadena, re.DOTALL)
另请注意,将有第二个结果,由 Regex101 确认。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.