【发布时间】:2010-12-13 02:37:11
【问题描述】:
我正在使用一个小的 Python 脚本来生成一些将在 C 头文件中使用的二进制数据。
此数据应声明为char[],如果可以将其编码为字符串(当它们不在 ASCII 可打印字符范围内时使用相关的转义序列)以保持标题更多,那就太好了比十进制或十六进制数组编码更紧凑。
问题是当我打印 Python 字符串的repr 时,它是用单引号分隔的,而 C 不喜欢这样。天真的解决方案是:
'"%s"'%repr(data)[1:-1]
但是当数据中的一个字节恰好是双引号时,这不起作用,所以我也需要对它们进行转义。
我认为一个简单的 replace('"', '\\"') 可以完成这项工作,但也许有更好、更 Python 的解决方案。
加分项:
将数据拆分为大约 80 个字符的行也很方便,但同样大小为 80 的 splitting the source string in chunks 的简单方法不起作用,因为每个不可打印字符在转义序列中占用 2 或 3 个字符. 获得 repr 后将列表拆分为 80 个块也无济于事,因为它可以划分转义序列。
有什么建议吗?
【问题讨论】: