【问题标题】:Inserting a single backslash into a string or list python将单个反斜杠插入字符串或列表 python
【发布时间】:2018-12-14 11:48:14
【问题描述】:

我有一个字节对象

b"'\x91\x84\xa4\x74\x69\x6d\x65\x93\xcb\x42\x2b\x5b\x8b\xb7\x00\x00\x00\xcb\x42\x2b\x5b\x8b \xb7\x00\x05\x1f\xcb\x42\x2b\x5b\x8b\xb7\x00\x0a\x3e\xa4\x76\x61\x72\x30\x93\xcb\x40\x24\x33\x33\x33 \x33\x33\x33\xcb\x40\x24\x33\x33\x33\x33\x33\x33\xcb\x40\x24\x33\x33\x33\x33\x33\x33\xa4\x76\x61\x72 \x31\x93\xcb\xff\xf8\x00\x00\x00\x00\x00\x00\xcb\x40\x34\x19\x99\x99\x99\x99\x9a\xcb\x40\x34\x19\x99 \x99\x99\x99\x9a\xa4\x76\x61\x72\x32\x93\xcb\xff\xf8\x00\x00\x00\x00\x00\x00\xcb\xff\xf8\x00\x00\x00 \x00\x00\x00\xcb\x40\x3e\x19\x99\x99\x99\x99\x9a'"

我想将 \\ 替换为 \ 以进一步处理 pandas msgpack 库。尽管在许多帖子中都提到了相同的问题,但我尝试了多种方式进行替换,但找不到答案。

我已将其转换为字符串:

'x91x84xa4x74x69x6dx65x93xcbx42x2bx5bx8bxb7x00x00x00xcbx42x2bx5bx8bxb7x00x05x1fxcbx42x2bx5bx8bxb7x00x0ax3exa4x76x61x72x30x93xcbx40x24x33x33x33x33x33x33xcbx40x24x33x33x33x33x33x33xcbx40x24x33x33x33x33x33x33xa4x76x61x72x31x93xcbxffxf8x00x00x00x00x00x00xcbx40x34x19x99x99x99x99x9axcbx40x34x19x99x99x99x99x9axa4x76x61x72x32x93xcbxffxf8x00x00x00x00x00x00xcbxffxf8x00x00x00x00x00x00xcbx40x3ex19x99x99x99x99x9a' P>

我可以插入“/”,但它无法在 msgpack 中处理。当我尝试插入 “\” 时,我再次得到双反斜杠。谁能帮我解决这个问题?

我想要的输出是:

b'\x91\x84\xa4\x74\x69\x6d\x65\x93\xcb\x42\x2b\x5b\x8b\xb7\x00\x00\x00\xcb\x42\x2b\x5b\x8b\ xb7\x00\x05\x1f\xcb\x42\x2b\x5b\x8b\xb7\x00\x0a\x3e\xa4\x76\x61\x72\x30\x93\xcb\x40\x24\x33\x33\x33\ x33\x33\x33\xcb\x40\x24\x33\x33\x33\x33\x33\x33\xcb\x40\x24\x33\x33\x33\x33\x33\x33\xa4\x76\x61\x72\ x31\x93\xcb\xff\xf8\x00\x00\x00\x00\x00\x00\xcb\x40\x34\x19\x99\x99\x99\x99\x9a\xcb\x40\x34\x19\x99\ x99\x99\x99\x9a\xa4\x76\x61\x72\x32\x93\xcb\xff\xf8\x00\x00\x00\x00\x00\x00\xcb\xff\xf8\x00\x00\x00\ x00\x00\x00\xcb\x40\x3e\x19\x99\x99\x99\x99\x9a'

【问题讨论】:

  • 当您说“将其转换为字符串”时,您的意思是源代码中的文字吗?否决票不是我,但可能是由于缺乏格式或示例长度。几个字节就可以理解这一点
  • 1.格式化 2. 你试过的代码;可能是原因..虽然我没有投反对票!
  • 你的字节对象和期望的输出看起来一样!!
  • 感谢您的回复。我的意思是“str”类的变量。很抱歉格式不正确。
  • @RahulAgarwal 当我打印时,我得到了带有单个反斜杠的所需输出。在变量中,它以双反斜杠存储。但是 msgpack 函数需要带有单个反斜杠的输入。否则我会得到不同的输出

标签: python arrays byte


【解决方案1】:

你可以这样做:

x = '/x91/x84/xa4/x74'
b = x.replace(r'/', '\\')

现在不要在控制台中写入b,它会显示为双重\\。如果您想按预期查看b,请写print(b)

【讨论】:

  • 但是我不能存储使用 print(b) 获得的输出以传递给另一个函数,对吗?
  • 感谢您的评论 :)
  • 不需要打印...b 具有您想要的值...只需将b 传递给另一个函数。 print的信息只是告诉你b包含的值是对的
  • 我知道\\是转义序列\的python表示。但是当我通过 b 时,我没有使用 msgpack 获得所需的输出。
  • 根据您的上述评论,它仍然为您提供p 而不是q 的输出
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多