replace "null" character in string

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
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

Dienstag 4. Oktober 2005, 15:59

In Strings habe ich den Wert 0x00. Wie kann ich diesen durch das <cr> Zeichen ersetzen

ich habe es mit

Code: Alles auswählen

nulls = "%s" % 0
newcontent.replace (nulls, "\n", 1)
Das funktioniert aber nicht so richtig. Die "nulls" kommen mehrfach vor

grüße

michael

Edit (Leonidas): Code in Python-Tags gesetzt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 4. Oktober 2005, 16:11

Das ist auch zu schaffen:

Code: Alles auswählen

newcontent = newcontent.replace('\x00', '\n')
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

Dienstag 4. Oktober 2005, 16:37

:-) hei de noi. heute stehe ich aber wirklich auf der Leitung

Code: Alles auswählen

def convert (input, output): 

    blocksize = 10000 

    inputfile = file(input, "rb")
    outputfile = open (output, "w")
    
    count = 0
    totalread = 0
    err = None
    
    while True: 

        content = inputfile.read(blocksize) 
        if content == '': 
            break 

        bytesread = len (content)
        totalread += bytesread
    
        count += 1
        if count % 100 == 0:
            print "Hallo habe [%d] gelesen" % (totalread)

        newcontent = unicode (content, 'cp273').encode('utf_8')
        
        # Das geht irgenwie immer noch nicht obwohl ich Deiner Argumentation folgen kann *gg*
        newcontent.replace ('\x00', '\n', 1)         
        
        # /me braucht Urlaub. Habs Woende durchgeackert
        
        outputfile.write (newcontent)
    
    inputfile.close() 
    outputfile.close() 
    
    return err
Noch ein letzes Mal, oder wie war das mit dem " .. du schaffst das schon"

Michael
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 4. Oktober 2005, 16:59

Warum nimmst du immer bei Replace zwangsweise eine 1 als Count? Das bedeutet, dass nur das erste Vorkommnis ersetzt wird und das willst du ja nicht, oder?

Also wird aus:
mbieren hat geschrieben:

Code: Alles auswählen

        # Das geht irgenwie immer noch nicht obwohl ich Deiner Argumentation folgen kann *gg*
        newcontent.replace ('\x00', '\n', 1)    
einfach ein

Code: Alles auswählen

        newcontent = newcontent.replace ('\x00', '\n')    
Du musst newcontent nochmal setzen, da replace den String nicht ändert, sondern nur eine Kopie zurückliefert, in der die Zeichen ersetzt wurden.

Beispiel:

Code: Alles auswählen

In [14]: c = chr(0) * 10

In [15]: c
Out[15]: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

In [16]: c.replace('\x00', '\n')
Out[16]: '\n\n\n\n\n\n\n\n\n\n'
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

Mittwoch 5. Oktober 2005, 11:25

das wars. muss mich erstmalwieder an python gewöhnen. Als alter C++ Mensch ist das immer wieder ungewohnt mit den String Objekten

Danke, wenn Du mal in München bist ... gibts Freibier

michael
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. Oktober 2005, 20:37

mbieren hat geschrieben:Danke, wenn Du mal in München bist ... gibts Freibier
Ich wohne in München.. naja fast.. etwas weiter im Norden. Danke fürs Angebot aber das passt auch so schon ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

Donnerstag 6. Oktober 2005, 08:50

erfahrungsaustausch ist immer gut. ich habe ganz schoene grabenkämpfe ausgestanden bis python zum einsatz kam.

marketing nach innen und aussen ist wichtig.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 6. Oktober 2005, 15:58

mbieren hat geschrieben:erfahrungsaustausch ist immer gut. ich habe ganz schoene grabenkämpfe ausgestanden bis python zum einsatz kam.
Aber du hast es geschafft. Gratuliere!
mbieren hat geschrieben:marketing nach innen und aussen ist wichtig.
Ja! Ich fänds ja auch lustig auf der Systems (auf die ich eigentlich plane zu gehen, na mal schauen wies mit den Karten wird) einen Python-Stand zu machen, vielleicht als Unterbereich eines anderen Standes :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten