【发布时间】:2023-03-16 07:37:01
【问题描述】:
如何删除字符串中的“\x00\x00”?
我有很多这样的字符串(示例如下所示)。我可以使用re.sub 来替换那些“\x00”。但我想知道是否有更好的方法来做到这一点?在 unicode、字节和字符串之间转换总是令人困惑。
'Hello\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'.
【问题讨论】:
-
除了从字符串中删除 \x00 之外,您可能还想首先考虑一下为什么要使用它们。也许构建字符串的代码可以处理它们?
-
您编写的生成此字符串的代码可能是错误的。
-
@Neil,这是因为我是一个 C 包装器,我应该为字符串提供最大可能长度。对于那些较短的字符串,“\x00”会附加在末尾。
-
@LuffyCyliu,在 C 包装器中,考虑在将 char 数组转换为 Python 对象时包含数据的实际长度。数组上的
strlen将比 Python str.rstrip 或 str.replace 更快,并使 Python 界面更直观。也许docs.python.org/3.5/c-api/bytes.html 和PyBytes_FromStringAndSize()会有所帮助。