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

replace "null" character in string

Beitragvon mbierenfeld » 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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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

Beitragvon mbierenfeld » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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

danke

Beitragvon mbierenfeld » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: danke

Beitragvon Leonidas » 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

schmarrn

Beitragvon mbierenfeld » 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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: schmarrn

Beitragvon Leonidas » 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder