2016-12-23 24 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中使用的新行字符

相关问题