2010-03-16 60 views
0

我需要使用以下格式解析文件。整蠱文件解析。不一致的直方圖

0000000 ...ISBN.. ..Author.. ..Title.. ..Edit.. ..Year.. ..Pub.. ..Comments.. NrtlExt Nrtl Next Navg NQoH UrtlExt Urtl Uext Uavg UQoH ABS NEB MBS FOL 
ABE0001 0-679-73378-7 ABE WOMAN IN THE DUNES (INT'L ED) 1st 64 RANDOM 0.00 13.90 0.00 10.43 0 21.00 10.50 6.44 3.22 2 2.00 0.50 2.00 2.00 ABS 

ID和ISBN不是問題,標題是。這些字段沒有設置長度,並且沒有明確的分隔符 - 空間可用於大部分文件。

另一個問題是,在評論字段中並不總是有條目。如果有,則內容中有間隔。

所以我可以得到前兩個,最後十四個。我需要一些幫助來搞清楚如何解析中間六個領域。

此文件是由我無法更改的舊程序生成的。我使用PHP來解析這個文件。

+0

是否有標題包含「.. ..」?如果沒有,你可以使用它作爲分隔符,如果有,我們有一個問題=) – Jens 2010-03-16 14:40:21

+0

我不認爲他的問題是解析列的標題,而是在下面的標題列中的數據行(S)。 – Don 2010-03-16 14:48:31

+0

嘗試在Excel中打開您的文件。分隔文件嚮導應該啓動。這是確定哪些分隔符效果最好的簡單方法。一旦你知道了,那麼你可以輕鬆地編寫你的PHP。 – dnagirl 2010-03-16 14:55:39

回答

0

你需要手工分析你的數據,並找出年份,版本和發佈者的樣子。例如,如果您發現該年份始終是兩位數字,並且發佈者始終來自某個有限的列表,那麼您可以從頭開始。

+0

好的建議,謝謝。到達那裏。 年份是兩位數字。 版總是排名(第1,第3,第9等)。 出版商也很棘手..只是發現一些是兩個字。 我曾想過從兩端攻擊字符串,抓住我能從中得到的東西。 – 2010-03-16 15:22:44

0

雖然我沒有看到其他任何方式再猜測了一下我會去了解它是這樣的:

我會規模的離我知道我可以可靠地解析出。離開你ABE WOMAN IN THE DUNES (INT'L ED) 1st 64 RANDOM

從那裏,我會嘗試找出版和儲存和取出版讓你有ABE WOMAN IN THE DUNES (INT'L ED) & 64 RANDOM後,該位置的字符串分割成兩個,另一個選擇是嘗試用一年,但當然諸如1984年的標題可能存在問題。 (猜測版當然假設它是所有版本的第7,51等等)。

最後,我會假設我可以在第二個字符串的開始處猜測64年,並進一步限制發佈者(/評論)部分。

剩下的就是純粹的猜測,除非你有作者的列表/出版商地方要匹配的,因爲我會假設,不但有帶空格的意見,但也與他們的名字空間的出版商。但是至少你應該將2個字符串包含在一個作者/標題中,並且在另一箇中包含發佈者(/註釋)。

總而言之,它應該限制手冊部分。

一旦完成我還保存在一個更好的格式的地方,所以我不必去再分析它;)

0

我不知道,如果PCRE引擎允許多個組從選擇中因此:(+)

([A-Z0-1] {7})\(\ D- \ d {3} - - \ d {5} \ d)\ \(\ d(?:st | nd | rd))\\ d {2} \ ([^ \ d。] +)\(\ d +。\ d {2})\(\ d +。\ d {2}) \ (\ d + \ d {2})\(\ d + \ d {2})\(\ d {1})\ (\ d + \ d {2})\(\ d + \ d {2})\(\ d + \ d {2})\ (\ d + \ d {2})\(\ d)\(\ d + \ d {2})\ (\ d + \ d {2})\(\ d + \ d {2})\(\ d + \ d {2})\ (\ W {3})

它確實看起來相當醜陋,並沒有解決你的作者題目問題,但它的匹配相當不錯。 關於你的問題,我沒有看到任何解決方案,但有作者查找表或使用其他服務通過ISBN查找標題和作者。

這就是說,如果不像在上面的例子中,作者不僅僅是他們的名字。 同時仔細檢查可能與上述正則表達式有關的所有異常,因爲標題可能包含1st或類似內容。

+0

查找一些信息是一個選項,並將被使用(亞馬遜AWS)。只是想在獲得該文件之前儘可能多地從文件中獲得。 – 2010-03-16 16:03:03

+0

好吧,如果您考慮使用其他服務,那麼您最好只從字符串的末尾開始讀取ISBN和附加系統信息。從AWS或其他領域拿走其餘的。這會使工作更容易。 – lhw 2010-03-16 20:12:46

1

我也會問自己'這有多好'以及'有多少記錄'?

例如,如果您正在解析此列表以便在網站上出售圖書目錄 - 您可能希望儘可能地做到盡善盡美,但希望您會錯過某些圖書並建立反饋機制,以便您的用戶可以幫助您解決問題(並使您能夠以新格式修復它)。另一方面,如果你一定要做得對,因爲每次錯誤的解析都會浪費很多錢,而且只有幾千本書,你應該計劃靠近,然後做一個人審查整個文件。 (在我的第一份工作中,我們花了六週的時間在一個數據轉換項目上轉換了150條記錄 - 這不是一個很好的使用時間)。

1

查找ISBN的書名和出版商(在一些在線數據庫),並分析僅剩下:)

BTW。你確定看起來像空間實際上是一個空間嗎?還有更多的「隱形」字符(如非休息空間)。我知道,不是一個好主意,但顯然這種格式的作者很有創意...