Seite 1 von 1

search und replace??

Verfasst: Mittwoch 13. Juli 2005, 21:07
von pau
Hallo,

ich bin neu by python und ich will in verschiedenen html Seiten besondere Zeichen wie zB á à é è í ñ ¡ ¿ mit den entsprechenden html Symbole ersaetzen. Das heisst, zB in allen html Files

á ---> á
à ---> à

usw. Ich habe ein kleines script mit sed Befehlen geschrieben aber es
kann nicht alle finden (er schafft etwa 60%, je nach dem Wort)

Also es geht darum, in den Files 1.html, 2.html, 3.html .... Sachen wie
zB folgende zu machen

és un aixó diferent d'açò però no d'alló ---> ès un això
diferent d'a¸o peró no d'allò

Ich glaube, das ist mit Python einfach aber ich habe erst vor wei Tagen
angefangen, die Sprache zu lernen...

:oops:

Verfasst: Donnerstag 14. Juli 2005, 06:36
von jens
Eine Liste aller HTML-Dateien könntest du so erhalten:

Code: Alles auswählen

import os, glob

print "lese...",
file_list = []
for root, folderlist, filelist in os.walk( "c:\\" ):
    file_list += glob.glob( os.path.join( root, "*.html" ) )
print "OK"

for filename in file_list:
    print filename
Für das ändern von Dateien ist http://www.python-forum.de/viewtopic.php?t=3483 interessant.

Zum "konvertieren" könntest du einfach mit .replace() arbeiten:

Code: Alles auswählen

rules = [
    ("á", "á"),
    ("à", "à")
]
for rule in rules:
    content = content.replace( rule[0], rule[1] )

Verfasst: Donnerstag 14. Juli 2005, 21:03
von BlackJack
Eine Liste der HTML-Enities für den Latin-1 Zeichensatz kann man sich aus dem Modul 'htmlentitydefs' holen. Das muss man dann nur noch für jens seine Schleife ein wenig aufbereiten:

Code: Alles auswählen

# -*- encoding: utf-8 -*-

from htmlentitydefs import entitydefs

# 
# Make a replacement list from the latin-1 HTML entities.
# 
replacements = [(char.decode('latin-1'), '&%s;' % entity)
                for (entity, char) in entitydefs.iteritems()
                if len(char) == 1]

test = "és un aixó diferent d'açò però no d'alló".decode('utf-8')

for char, entity in replacements:
    test = test.replace(char, entity)

print test

Verfasst: Freitag 15. Juli 2005, 12:54
von pau
Hi,

Danke... Am Ende musste ich eine Mischung aus mozilla composer + doch sed benutzen, weil die Seiten sehr dringend "veröffentlicht" werden mussten...

Schade... ich wollte es doch mit python machen aber mir war unklar, wie ich Eure codes zusammenbringen hätte sollen...

Ich bin sicher, es wäre viel schneller und eleganter mit python gewesen...

Danke nochmal,

Pau