如何将repr转换为编码的字符串

Matiasg

我有这个str(来自我无法修复的文件):

In [131]: s
Out[131]: '\\xce\\xb8Oph'

这接近于utf8编码的字符串的repr:

In [132]: repr('θOph'.encode('utf8'))
Out[132]: "b'\\xce\\xb8Oph'"

我需要原始的编码字符串。我可以做到

In [133]: eval("b'{}'".format(s)).decode('utf8')
Out[133]: 'θOph'

但是我会...难过吗?如果没有更简单的选择来获取它。有没有更好的办法?

保罗·斯卡丁

您的解决方案还可以,唯一的问题是eval与任意输入一起使用时很危险。安全的替代方法是使用ast.literal_eval

>>> s = '\\xce\\xb8Oph'
>>> from ast import literal_eval
>>> literal_eval("b'{}'".format(s)).decode('utf8')
'\u03b8Oph'

使用eval,您将受到以下限制:

>>> eval("b'{}'".format("1' and print('rm -rf /') or b'u r owned")).decode('utf8')
rm -rf /
'u r owned'

由于ast.literal_evalrepr字面量相反,我想这就是您要查找的内容。

[更新]

如果您的文件带有转义的unicode,则可能要按照unicode_escapeGinger ++的答案中建议编码打开文件我将保留我的答案,因为问题是“如何将repr转换为编码的字符串”,而不是“如何使用转义的unicode解码文件”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何将interface {}转换为字符串?

来自分类Dev

如何将iOS appStoreReceiptURL转换为Base 64编码的字符串?

来自分类Dev

如何将字符串转换为Java列表?

来自分类Dev

如何将代码块转换为字符串

来自分类Dev

如何将字符串转换为整数

来自分类Dev

如何将字符串值转换为斜体

来自分类Dev

如何将字符串值转换为枚举

来自分类Dev

如何将JSON数组转换为字符串..?

来自分类Dev

如何将列表转换为多行字符串?

来自分类Dev

如何将字符串转换为BSON?

来自分类Dev

如何将StackFrame集合转换为字符串?

来自分类Dev

如何将CoreLocation坐标转换为字符串?

来自分类Dev

如何将字符串转换为可读流?

来自分类Dev

如何将字符串转换为枚举?

来自分类Dev

如何将HtmlAttribute转换为字符串?

来自分类Dev

如何将十六进制编码的字符串转换为十六进制整数

来自分类Dev

如何将MultiIndex转换为字符串类型

来自分类Dev

如何将字符串转换为“ gbk”编码?

来自分类Dev

如何将字符串转换为Unicode字符

来自分类Dev

如何将字符串从给定编码转换为其他编码?

来自分类Dev

如何将.wav文件转换为base64编码的字符串?

来自分类Dev

如何将字符从数组转换为字符串

来自分类Dev

python3:如何将具有Unicode编码的字符串转换为字母字符串

来自分类Dev

如何将十六进制编码的字符串转换为十六进制整数

来自分类Dev

如何将repr转换为编码的字符串

来自分类Dev

如何将字符数组转换为字符串

来自分类Dev

如何将 Base64 编码的字符串直接转换为 SecureString

来自分类Dev

如何将字节编码的字符串转换为先前的字符串值?

来自分类Dev

如何将字符串转换为字符

Related 相关文章

热门标签

归档