2016-12-23 26 views
0

我有幾個文本文件都是.gz格式。現在我運行這段代碼在pyspark腳本:相同的字符串不同的文件正則表達式不起作用

with gzip.open(filepath, 'rb') as f: 
    file_content = f.read().decode('utf-8') 
Func_that_does_regex(file_content) 

正則表達式不工作(沒有錯誤,但不會產生正確的輸出),因爲代碼是在火花工人執行我也沒有什麼好主意如何調試它。但是,如果我解壓縮一個文件,然後手動複製粘貼內容到一個新的文本文件(通過leafpad)並再次gzip,常規expresion的作品。如果我通過pyspark .take()方法打印字符串塊,則原始字符串和新文件'看起來'都是相同的。我錯過了什麼?

的Python 3.5和2.0.1星火

+0

這是相當不得不說,如果你不提供樣本GZ文件... – Mariusz

+0

例GZ文件:[鏈接]( https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2016-40/segments/1474738659496.36/wet/CC-MAIN-20160924173739-00003-ip-10-143-35-109.ec2。 internal.warc.wet.gz) – Thagor

+0

不要運行「.decode('utf-8')」a閱讀。 確保你的正則表達式是二進制的(例如:re.compile(b'myregex'))。 – Sazzy

回答

0

的發行曾與不同的操作系統如何處理字符串的新線做。在我只用過Linux創建的文件之前,\ n在正則表達式中就足夠了。我現在得到的文件使用\ r \ n作爲新行,因此我的正則表達式不再有效!

\ R = CR(回車)//用作Mac OS中一個新行字符X

\ N = LF(換行)//用作在的Unix /的Mac OS一個新行字符之前X

\ r \ n = CR + LF // Windows中使用的新行字符

相關問題