Beste Weg, Sie zu ersetzen \x00 in python-Listen?
Ich habe eine Liste von Werten aus einer analysiert PE-Datei, die include /x00 null-bytes am Ende jedes Abschnitts. Ich möchte in der Lage sein, um die zu entfernen /x00 bytes aus der Zeichenkette ohne entfernen Sie alle "x"s aus der Datei. Ich habe versucht zu tun .ersetzen und neu.sub, aber nicht die viel Erfolg.
Mit Python 2.6.6
Beispiel.
import re
List = [['.text\x00\x00\x00'], ['.data\x00\x00\x00'], ['.rsrc\x00\x00\x00']]
while count < len(List):
test = re.sub('\\\\x00', '', str(list[count])
print test
count += 1
>>>test (removes x, but I want to keep it) #changed from tet to test
>>>data
>>>rsrc
Ich möchte die folgende Ausgabe
text
Daten
rsrc
Irgendwelche Ideen auf dem besten Weg zu gehen über diese?
Verwenden Sie einfach
Nicht die Namen Ihrer Variablen nach Typ (die Liste). Sind Sie für Probleme Fragen.
PEP8 beiseite, du wirst doch nicht in irgendwelche Schwierigkeiten mit
Vielleicht ist der Python-interpreter wird nicht hängen Sie, aber Ihre co-Arbeitskräfte. Es ist ein rutschiger Abhang, und lädt für schlechte Variablennamen.
Wenn Sie denken, dass Sie gemeint
\x00
wenn Sie wirklich wollen, entfernen Sie das null-byte.Nicht die Namen Ihrer Variablen nach Typ (die Liste). Sind Sie für Probleme Fragen.
PEP8 beiseite, du wirst doch nicht in irgendwelche Schwierigkeiten mit
List
unterschiedliche von list
(es kann zu subtilen bugs).Vielleicht ist der Python-interpreter wird nicht hängen Sie, aber Ihre co-Arbeitskräfte. Es ist ein rutschiger Abhang, und lädt für schlechte Variablennamen.
Wenn Sie denken, dass Sie gemeint
str(List[count])
im code.
InformationsquelleAutor user2292661 | 2013-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder ändern Sie die Liste in place, anstatt einen neuen zu erstellen:
Sprechen Sie über generator-Ausdrücke? Wie auch immer, das ist nur ein kleines Beispiel, je nach den OP ' s braucht, kann er das tun, wenn er will
Dank jamjlax, dass Super geklappt.
gibt es einen Weg, um loszuwerden, die Klammern in die Liste zu bekommen nur die Daten, Werte? Beispiel. [['.text'], ['.Daten]] und ich wollte eine Schleife über den index-sagen-Sektion in sectionlist dann in der nächsten Zeile legen Sie im Abschnitt[0], es würde mir den value ['text'], aber ich möchte einfach .text. Wie Sie das tun können?
InformationsquelleAutor jamylak
InformationsquelleAutor Luka Rahne
Was Sie wirklich wollen, zu tun ist, ersetzen Sie
'\x00'
Zeichen in strings in einer Liste.Richtung, das Ziel, die Menschen oft übersehen die Tatsache, dass in Python 2 die nicht-Unicode-Zeichenfolge
translate()
Methode wird Optional auch (oder nur) löschen 8-bit-Zeichen wie unten dargestellt. (Es nicht akzeptieren dieses argument in Python 3, da strings sind Unicode-Objekte) eingestellt werden.Ihre
List
Datenstruktur scheint ein wenig seltsam, da es eine Liste mit ein-element-Listen, bestehend aus einzelnen strings. Egal, im code unten habe ich umbenannt, essections
da Großgeschriebene Wörter, sollten nur verwendet werden, für die Namen von Klassen nach PEP 8 -- Style Guide for Python Code.Ausgabe:
InformationsquelleAutor martineau
Versuchen Sie eine unicode-Muster, wie hier:
Sollte es geben, die folgenden Ergebnisse:
Oder mit Liste Verstehens:
Eigentlich sollte funktionieren ohne das 'u' vor dem string. Entfernen Sie einfach die ersten 3 Schrägstriche, und verwenden Sie diese als Ihre regex-Muster:
InformationsquelleAutor Chris Doggett
Ich denke, einen besseren Weg, um die Pflege dieses speziellen Problems ist die Verwendung der folgenden Funktion:
Dies wird loszuwerden, die nicht gerade \x00 aber eine andere hex-Werte, die an Ihren string.
InformationsquelleAutor Atri Basu
InformationsquelleAutor thkang