gpt4 book ai didi

python - 用双引号Python获取str repr

转载 作者:太空狗 更新时间:2023-10-29 17:26:24 24 4
gpt4 key购买 nike

我正在使用一个小的 Python 脚本来生成一些将在 C 头文件中使用的二进制数据。

此数据应声明为 char[],如果可以将其编码为字符串(当它们不在 ASCII 可打印范围内时使用相关的转义序列)会更好chars) 以保持 header 比使用十进制或十六进制数组编码更紧凑。

问题是,当我打印 Python 字符串的 repr 时,它由单引号分隔,而 C 不喜欢这样。天真的解决方案是:

'"%s"'%repr(data)[1:-1]

但是当数据中的一个字节恰好是双引号时,这不起作用,所以我也需要对它们进行转义。

我认为一个简单的 replace('"', '\\"') 可以完成这项工作,但也许有更好、更 pythonic 的解决方案。

加分项:

将数据拆分成大约 80 个字符的行也很方便,但同样是 splitting the source string in chunks 的简单方法大小为 80 的将不起作用,因为每个不可打印的字符在转义序列中占用 2 或 3 个字符。在获取 repr 之后将列表分成 80 个 block 也无济于事,因为它可能会分割转义序列。

有什么建议吗?

最佳答案

你可以试试json.dumps:

>>> import json
>>> print(json.dumps("hello world"))
"hello world"

>>> print(json.dumps('hëllo "world"!'))
"h\u00ebllo \"world\"!"

我不确定 json 字符串是否与 C 兼容,但至少它们有一个相当大的公共(public)子集并且保证与 javascript 兼容;)。

关于python - 用双引号Python获取str repr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com