有similiar question,但解决方案似乎不起作用。在
假设我编码了一个字符串:
>>> a = 'dada大大'.encode('utf-8')
>>> type(a)
<class 'bytes'>
>>> a
>>> b'dada\xe5\xa4\xa7\xe5\xa4\xa7'
我想要的是这样的东西:
^{pr2}$str(a)
不起作用:
>>> str(a)
>>> "b'dada\\xe5\\xa4\\xa7\\xe5\\xa4\\xa7'"
我尝试过将stdout重定向到一个变量,但还是得到了"b'dada\\xe5\\xa4\\xa7\\xe5\\xa4\\xa7'"
。在
我可以用正则表达式处理它并得到我想要的,但我正在寻找一种更具Python式的方法来实现这一点。有什么建议吗?在
因为你很高兴在评论中提到了你的实际问题,我将再次更新我的答案,以回应这个问题。原始答案见下文。在
GitHub Markdown API要求您以JSON格式发送数据。JSON本身借用了JavaScript中的字符串转义,对于这个字符,它将是} module 时,您根本不需要担心这个问题:
\u5927
。但是,在使用^{如您所见,API接受编码文本没有问题,并且正确地生成正确的输出,而不必担心编码。在
或者将原始API与
^{pr2}$requests
库一起使用时:原始答案
当您只执行
str(a)
操作时,您将得到字节字符串的字符串表示形式。当然,当您在解释器中这样使用它时,解释器实际上会调用repr
来显示它。而包含反斜杠的字符串将把它们作为\\
进行转义。那就是它们的来源。在最后,必须去掉
b'
和尾随的'
来获得字节字符串的字符串表示的内容。在旁注:}在bytes对象上使用时会产生相同的结果。
str()
和{不,你没有。最后一个字符串中没有双反斜杠。它们之所以出现,是因为当您在REPL中输入stuff时,它会在调用
repr
之后将这些东西的返回值输出到控制台。但这并不意味着,实际的弦突然改变了:如您所见,字符串中没有双反斜杠。是的,您可以再次看到它们,但这仅仅是因为REPL正在打印
list(s)
的返回值。列表中的每一项都是一个字符,包括反斜杠。它们只是再次转义,因为'\'
不是有效的字符串。在好的,最后我找到了解决方案,它来自Python Replace \\ with \
也许我应该解释清楚我想要什么。在
编辑-我的测试结果
^{pr2}$bytes
实际上是一个整数数组:您可以使用
^{pr2}$因此
相关问题 更多 >
编程相关推荐