2010-09-07 4 views
1

J'ai écrit un script pour automatiser le processus de création d'une galerie d'images. J'ai utilisé os.path.join() pour créer des chemins vers de nouveaux répertoires d'images. J'ai seulement recalé après avoir créé toutes les galeries que l'utilisation os.path.join() n'était pas une bonne idée car elle crée des chemins avec \ (sur Windows) qui provoque des problèmes avec firefox (il ne semble pas comprendre le format du chemin et ne peut pas trouver les images).BeautifulSoup se bloque sur les chemins avec des barres obliques

Je n'ai pas besoin de créer à nouveau toutes les galeries puisque les en-têtes de galerie doivent être saisis manuellement. Je pensais que BeautifulSoups prettify() fixerait les chemins mais il s'étouffe sur les barres obliques inverses. par exemple.

entrée :

<td><a rel="group" href="images\042.jpg"><img class="gimage" src="images\thumbnails\thumb_042.jpg" alt=""></a></td> 

sortie:

<td> 
<a rel="example_group" href="images"> 
    <img class="gimage" src="images humbnails humb_042.jpg" alt="" /> 
</a> 
</td> 

Comment puis-je réparer les chemins?

+0

beautifulsoup interprète les occurrences de \ t sous forme d'onglets que vous aurez probablement pour échapper à ceux en quelque sorte. – GWW

+0

Toutes les barres obliques inverses se produisent-elles dans les attributs href et src comme indiqué ci-dessus? – unutbu

+1

@GWW: Regardez de plus près, ce n'est pas seulement les occurrences '\ t'. – volting

Répondre

1

Dans ce cas, selon les commentaires, il semble que le problème peut être résolu avec une substitution globale de / pour \:

import fileinput 
import sys 
for line in fileinput.input(['test.html'], inplace=True, backup='.bak'): 
    sys.stdout.write(line.replace('\\','/')) 
Questions connexes