2016-10-11 50 views
2

我正在處理一些沒有結構(它們很混亂)的.txt文件,它們代表了一些頁面。爲了給他們一些結構,我想確定文件本身沒有的頁數。這可以通過每三個新行與一些註解像更換來完成:每三個新行最匹配和替換標識符的效率最高?

\n 
    page: N 
\n 

哪裏N是多少。這是我的文件的樣子,我也嘗試了一個簡單的replace。然而,這個功能混淆了,並沒有給我預期的格式,就像this。想知道如何用某種標識符替換空格,試圖解析它們並獲得某些信息(頁面)的位置?

我也試過這樣:

進口重新

replaced = re.sub('\b(\s+\t+)\b', '\n\n\n', text) 
print (replaced) 

回答

2

如果你在你的問題說明狀態格式爲常規:

更換三個新行\n每發生page: N

您不必使用re模塊。作爲東西下面簡單會做的伎倆:

>>> s='aaaaaaaaaaaaaaaaa\n\n\nbbbbbbbbbbbbbbbbbbbbbbb\n\n\nccccccccccccccccccccccc' 
>>> pages = s.split('\n\n\n') 
>>> ''.join(page + '\n\tpage: {}\n'.format(i + 1) for i, page in enumerate(pages)) 
'aaaaaaaaaaaaaaaaa\n\tpage: 1\nbbbbbbbbbbbbbbbbbbbbbbb\n\tpage: 2\nccccccccccccccccccccccc\n\tpage: 3\n' 

我懷疑,雖然,您的格式比常規的少,但你必須有更多的細節之前,我可以給一個很好的答案。

如果你想與凌亂的空白(這我會混在其他任何空格3個換行定義爲至少)分割,可以替換s.split('\n\n\n')有:

re.split(r'(?:\n\s*?){3,}', s) 
+0

的事情是,我用tika來報廢一些pdf文件,不知何故,我發現每三個'\ n \ n \ n'就意味着有一個新頁面。任何建議或任何想法如何更清楚?謝謝您的幫助! – tumbleweed

+1

如果是這樣的話,那麼這應該工作得很好。我認爲你的實際數據可能包含比3更多的換行符,或者壞的空格,在這種情況下're'可能是最好的解決方案 – brianpck

+0

是啊......我的數據實際上包含了其中的一些,這將是一個「重新」解決方案? 。還有什麼辦法可以將頁眉和頁腳放在一起:'\ n \ tpage:{} \ n'format ?. – tumbleweed