search und replace??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pau
User
Beiträge: 2
Registriert: Donnerstag 30. Juni 2005, 13:14

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:
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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] )

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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
pau
User
Beiträge: 2
Registriert: Donnerstag 30. Juni 2005, 13:14

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
Antworten