首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字节串中用单反斜杠替换双反斜杠

在字节串中用单反斜杠替换双反斜杠
EN

Stack Overflow用户
提问于 2017-07-27 17:11:47
回答 1查看 1.1K关注 0票数 1

我已经将数据:b'\xa2ac\xa0av\xf6' of <class 'bytes'>存储在SAP中,但是当我使用pyHDB查询数据时,结果会将反斜杠转义为:b'\\xa2ac\\xa0av\\xf6' <class 'bytes'>

如何将数据类型保持为字节,但删除双反斜杠?我已经考虑过将其转换为字符串并替换反斜杠,然后将其转换回字节,但一旦我将其转换回字节,就会再次出现双反斜杠。我正在使用Python3。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-27 19:26:58

这个很好,但我不确定它是否很优雅。

代码语言:javascript
复制
import ast

def remove_double_backslashes(b):
    return ast.literal_eval(str(b).replace('\\\\', '\\'))

如果您使用的是比3.2更早的Python版本,您可能需要用ast.literal_eval替换eval。这个内置的函数有时会很危险,但是作为一个业余程序员,我想不出为什么eval(str(b)) ( b是一个字节对象)会造成任何伤害。您甚至可以验证b是一个带有assert type(b) == bytes的字节对象。

(顺便说一句,我不知道SAP或pyHDB是什么,但我想我仍然回答了这个问题)

编辑/备注

即使是assert type(b) == bytes,如果有人决定将名称bytes重新定义为其他意思,也无法防止伤害,如下所示:

代码语言:javascript
复制
class Foo:
    def __init__(self):
        self.oro = 0

    def __repr__(self):
        return "open('file', 'wb')" # DON'T DO THIS...

bytes = Foo # DON'T DO THIS...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45357106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档