0

我正在尝试从已被 redmon 拦截并通过管道传输到 python 程序的 postscript 文档中自动提取地址。我已经到了可以捕获 postscript 输出(并将其写入文件)的地步,但我被困在提取部分。

在 python 中是否有一种好的/可靠的方法可以做到这一点,或者我是否需要通过 ps2ascii 运行 postscript 文件并希望最好?

如果有其他语言的工具可以做到这一点,我很乐意评估它们。

4

2 回答 2

2

实际上,在大多数情况下,只解析 Postscript 就足够了,因为 Postscript 文档是一个普通的文本文件。

澄清一下:是的,我知道 Postscript 文档显示的内容是一个程序的结果,该程序是用一种称为 Postscript 的漂亮反向或反向漂亮的语言编写的。然而,在大多数情况下,grep 程序源代码就足够了。在某些其他情况下,文本可能被编码为曲线或位图,并且除了对渲染输出进行 OCR 之外,将无法提取它。

底线:这取决于您要提取的信息类型以及后记文件的类型。在我看来,ps2ascii这是一个很好的工具,也是解决问题的一种方法,但是(i)不能保证成功(可能比对源代码略多一点)(ii)在很大程度上只是剥离运算符和(iii ) 在某些情况下可能会导致文本丢失。

于 2012-10-11T10:48:23.743 回答
2

因为我评论了 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',')')

请注意,精细格式化(紧缩)的后记通常会将字符串分成小块(甚至是单个字符)。ps2ascii 很好地为您将它们拼凑在一起,而显然我的简单脚本不会。

于 2012-10-11T19:39:47.173 回答