Best way to replace \x00 in python lists?
>>> L = [['.text\x00\x00\x00'], ['.data\x00\x00\x00'], ['.rsrc\x00\x00\x00']]
>>> [[x[0]] for x in L]
[['.text\x00\x00\x00'], ['.data\x00\x00\x00'], ['.rsrc\x00\x00\x00']]
>>> [[x[0].replace('\x00', '')] for x in L]
[['.text'], ['.data'], ['.rsrc']]
Or to modify the list in place instead of creating a new one:
for x in L:
x[0] = x[0].replace('\x00', '')
lst = (i[0].rstrip('\x00') for i in List)
for j in lst:
print j,
Try a unicode pattern, like this:
re.sub(u'\x00', '', s)
It should give the following results:
l = [['.text\x00\x00\x00'], ['.data\x00\x00\x00'], ['.rsrc\x00\x00\x00']]
for x in l:
for s in l:
print re.sub(u'\x00', '', s)
count += 1
.text
.data
.rsrc
Or, using list comprehensions:
[[re.sub(u'\x00', '', s) for s in x] for x in l]
Actually, should work without the 'u' in front of the string. Just remove the first 3 slashes, and use this as your regex pattern:
'\x00'