2016-12-11 2 views
0

S'il vous plaît comment puis-je résoudre le problème decorrespondants multiples regexes python dans une ligne dans tarfile ouvert fichier tar

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

lorsque vous essayez d'exécuter plusieurs regexes match contre une ligne à partir du fichier? Le match multiple Je suis en train est:

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

qui travaille dans les matches de fichier texte et que j'attribue à l'aide Stackoverflow.

J'ai compilé les expressions rationnelles comme ceci:

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

mais TypeError apparaît encore.

Plus tôt dans mon script, je peux sortir avec ceci: match = re.search (b'something-string: \ s + 111 + \ d {2,5}, ligne) Je pensais préfixer la Les regex avec 'b' dans la correspondance multiple étaient suffisants. S'il vous plaît ce que je fais mal?

+0

Essayez d'utiliser 'r '... '' au lieu de 'b' ... '' –

+0

Je ne peux pas utiliser r' ..' parce que son pas un fichier texte en cours de lecture. – Sina

Répondre

0

J'ai dû décoder la ligne, car il s'agit d'un flux binaire.

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