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

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das ist auch zu schaffen:

Code: Alles auswählen

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

:-) 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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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

marketing nach innen und aussen ist wichtig.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Antworten