2014-06-04 3 views
0

Je voudrais modifier le morceau de code suivant pour remplacer aussi u2019 et u2122 par un espace vide, en plus de la virgule qu'il remplace déjà par un espace vide. Comment dois-je procéder? Merci!Python 2.7.3 BeautifulSoup- Supprimer u2019 et u2122 de la chaîne

if(link != None): 
    items.put([link.text,link['href']]) 
    f.write((link.text).encode("utf-8").replace(',','')+","+link['href'].encode("utf-8").split('&')[0]+newlinechar) 

Répondre

0

Vous devez utiliser replace plusieurs fois comme ceci:

f.write((link.text).encode("utf-8").replace(',','').replace(u"\u2019", '').replace(u"\u2122", '')+","+link['href'].encode("utf-8").split('&')[0]+newlinechar) 

C'est inefficace cependant, car une nouvelle chaîne doivent être recréés à plusieurs reprises (les chaînes en Python sont immuables). Donc, pensez à utiliser une regex à la place pour correspondre et remplacer tous les 3 dans un balayage.

>>> import re 
>>> s = u"xdu\u2019sfs," 
>>> print s 
xdu’sfs, 
>>> print re.sub(u'[,\u2019\u2122]', '', s) 
xdusfs