我想從被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