替换字符串列表中的 \\x00 的最佳方法?

新手上路,请多包涵

我有一个已解析的 PE 文件的值列表,其中每个部分末尾都包含 \x00 空字节。我希望能够从字符串中删除 \x00 字节,而不从文件中删除所有 "x" s。我试过做 .replace()re.sub() ,但没有取得多大成功。

使用 Python 2.6.6

例子。

 import re

List = [['.text\x00\x00\x00'], ['.data\x00\x00\x00'], ['.rsrc\x00\x00\x00']]

count = 0
while count < len(List):
    test = re.sub('\\\\x00', '', str(List[count]))
    print test
    count += 1

输出:

 ['.text']
['.data']
['.rsrc']

我想获得以下输出:

 .text
.data
.rsrc

关于解决此问题的最佳方法的任何想法?

原文由 user2292661 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 756
2 个回答
>>> 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']]

或者就地修改列表而不是创建新列表:

 for x in L:
    x[0] = x[0].replace('\x00', '')

原文由 jamylak 发布,翻译遵循 CC BY-SA 3.0 许可协议

lst = (i[0].rstrip('\x00') for i in List)
for j in lst:
   print j,

原文由 Luka Rahne 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题