2017-01-12 2 views
1

Je travaille dans un projet avec OCR en Espagnol. La caméra capture différents cadres dans une ligne de texte. La ligne de texte contient ceci:Comment faire pour supprimer les caractères invalides entre plusieurs chaînes en python?

Este Texto, es una prueba del dispositivo lector para no Videntes.

Après quelques opérations je reçois des chaînes comme ça:

s1 = "Este texto, es una p!" 
s2 = "fste texto, es una |prueba u.-" 
s3 = "jo, es una prueba del dispo‘" 
s4 = "prueba del dispositivo \ec" 
s5 = "del dispositivo lector par:" 
s6 = "positivo lector para no xndev" 
s7 = "lector para no videntes" 
s8 = "¡r para no videntes." 

Je voudrais joindre la chaîne afin que je puisse obtenir le texte de la ligne balayée dans une chaîne finale comme ça:

sf = "Este texto, es una prueba del dispositivo lector para no videntes." 

pour commencer, j'ai essayé d'utiliser SequenceMatcher entre deux cordes, mais il n'a pas été efficace:

# -*- coding: utf-8 -*- 
from difflib import SequenceMatcher as sq 
s1 = "Este texto, es una p!" 
s2 = "fste texto, es una prueba u.-" 
match = sq(None, s1, s2).find_longest_match(0, len(s1), 0, len(s2)) 
print unicode(s1 + s2[match.b + match.size:]) 

Le résultat a des caractères non valides comme | ou !:

>>>Este texto, es una p!|prueba u.- 

Entre s2 et s3:

>>>fste texto, es una |prueba u.-prueba del dispo‘ 

Etc J'utilise Python 2.7 sous Windows 7.

Répondre

0

Vous devez utiliser regex faire quelque chose comme

import re 
line = re.sub(r'\W', r'', line) 

\ W signifie aucun caractère de mot. Vous pouvez en savoir plus sur les expressions régulières sur le site: https://docs.python.org/2/library/re.html