我想从被redmon拦截并传送到python程序的postscript文档中自动提取地址。我已经到了可以捕获postscript输出(并将其写入文件)的地步,但我被困在提取部分。从postscript提取文本和/或使用python创建覆盖
是否有一个很好/可靠的方式来做到这一点在Python中,或者我需要通过ps2ascii运行postscript文件,并希望最好?
如果有其他语言的工具,可以做到这一点,我会很乐意对其进行评估。
我想从被redmon拦截并传送到python程序的postscript文档中自动提取地址。我已经到了可以捕获postscript输出(并将其写入文件)的地步,但我被困在提取部分。从postscript提取文本和/或使用python创建覆盖
是否有一个很好/可靠的方式来做到这一点在Python中,或者我需要通过ps2ascii运行postscript文件,并希望最好?
如果有其他语言的工具,可以做到这一点,我会很乐意对其进行评估。
因为我评论了ps2ascii占用大量的空间:这里提供了一个“80%”的解决方案来提取字符串,这些字符串在使用python的postscript文件中出现。
import fileinput
for line in fileinput.input():
for p in line.replace('\\(','EscapeLP').replace('\\)','EscapeRP').split('(')[1:]:
print p[:p.find(')')].replace('EscapeLP','(').replace('EscapeRP',')')
请注意,精细格式化(字母)postscript通常会将字符串拆分成小块(甚至是单个字符)。 ps2ascii在将它们拼凑在一起做的很好,显然我的简单脚本不会。
事实上,在大多数情况下只是分析PostScript就足够了,因为后记文件是一个普通的文本文件。
作为澄清:是的,我知道Postscript文档显示的是用美妙颠倒或反向美丽的语言Postscript编写的程序的结果。然而,在大多数情况下,对程序源进行grep就足够了。在其他一些情况下,文本可能被编码为曲线或位图,并且在OCR处理渲染输出之后无法提取它。
底线:它取决于您想要提取的信息的类型以及postscript文件的类型。在我看来,ps2ascii
是一个很好的工具,以及解决问题的一种方式,但一个是(i)并不能保证成功(也许比greping源稍多)(二)在很大程度上只是去掉运营商和( iii)在某些情况下可能导致文本丢失。
这取决于后记文件是如何制造了很多。如果你能给我们一个例子,它可能会帮助你。 – lhf
最有可能的最好的办法将是自己解析它 - 其原因是可以利用周围的代码(和注释),以确定哪些字符串是你需要提取的地址。首先看几个例子并寻找你的目标字符串。用一些周围的代码发布一个例子。 – agentp