2016-12-11 27 views
0

請我怎麼想對從文件中的一行運行多個正則表達式匹配時克服選配多種蟒蛇正則表達式打開tar文件

TypeError: cannot use a string pattern on a bytes-like object 

問題? 我想的多匹配:

re.match('|'.join('(?:{0})'.format(x) for x in (regex1, regex2, regex3)), line): 

這在純文本文件比賽和我歸因於StackOverflow的援助工作。

我編的正則表達式,像這樣:

regex1 = re.compile(b'http\:\/\/ipaddress\:port\/service\?') 
regex2 = re.compile(b'\_event\=new?') 
regex3 = re.compile(b'askment\:') 

但這種類型錯誤仍然出現。

在我的劇本早些時候,我可以用這個脫身: 匹配= re.search(b'something字符串:\ S + 111 + \ d {2,5}」,行) 所以我想的前綴在多次比賽中用'b'表達的正則表達式就足夠了。 請問我做錯了什麼?

+0

嘗試使用'R「...‘',而不是'B’...‘' –

+0

我不能使用R’..」,因爲正在讀它不是一個純文本文件。 – Sina

回答

0

我不得不解碼這條線,因爲它以二進制流的形式出現。

re.match('|'.join('(?:{0})'.format(x) for x in (regex1, regex2, regex3)), line.decode("ascii or something else")):