Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复此bytes对象的编码以仅保留实际文本并删除'\x00\x05*\x00\x00\x0e\x00bjbj';在蟒蛇3中?_Python_String - Fatal编程技术网

Python 如何修复此bytes对象的编码以仅保留实际文本并删除'\x00\x05*\x00\x00\x0e\x00bjbj';在蟒蛇3中?

Python 如何修复此bytes对象的编码以仅保留实际文本并删除'\x00\x05*\x00\x00\x0e\x00bjbj';在蟒蛇3中?,python,string,Python,String,问题: 我使用的API以字节对象的形式检索感兴趣的内容 字节对象(myobj)的值为: myobj = b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00This is \rthe sentence \rI want to \rkeep.\r\r\x03\r\r\x04\r\r\x03\r\r\x04\x017\x00\x06' 问题: 我怎么能只保留这句话:“这是我想保留的句子。” 我所尝试的: 1:我试着用UTF-8解码,但是输出和输入是一样的。我还尝试了

问题:

我使用的API以字节对象的形式检索感兴趣的内容

字节对象(myobj)的值为:

myobj = b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00This is \rthe sentence \rI want to \rkeep.\r\r\x03\r\r\x04\r\r\x03\r\r\x04\x017\x00\x06'
问题:

我怎么能只保留这句话:“这是我想保留的句子。”

我所尝试的:

1:我试着用UTF-8解码,但是输出和输入是一样的。我还尝试了“ascii”、“utf-16”和“utf-8”。如果删除'ignore'参数,我将收到一个错误:UnicodeDecodeError:'utf-8'编解码器无法解码位置0:无效的连续字节中的字节0xd0

myobj.decode('utf-8', 'ignore')
2:尝试使用字符串中的可打印函数,该函数返回与输入几乎相同的输出

import string
mystr =str(myobj)
print( ''.join(x for x in test2 if x in mystr.printable))
3:我还尝试使用strip()和replace删除字符串的某些部分,但是,不同的字符太多了

任何建议都很好


谢谢

你就快拿到了。结合选项1和2:

new_obj = ''.join(c for c in my_obj.decode('utf-8', 'ignore') if c.isprintable())
但是,您的
新对象将是:

'This is the sentence I want to keep.7'

这是因为,在
my_obj
的末尾,您有
'\x017'
。这是一个值为0x01的字节,后跟字符
'7'

首先,您需要某种规则来保留什么和丢弃什么。如果将“可打印”字符串替换为自定义字符串,则变体2可能会起作用。如果不知道接收的字节的实际格式,则无法以任何可靠的方式解决此问题。您使用的这个API肯定有一些可用的文档?也许它实际上是一个C
结构,在这种情况下,您只需要从特定范围检索字节。可能有字节指示感兴趣文本的偏移量和/或长度。只有一个例子是无法判断的。谢谢:)就是这样!有没有关于学习通用编码的“速成课程”可以让我参考?我经常会遇到这些问题,谷歌搜索StackOverflow和搜索以前的问题通常是一个漫长的过程……试试看。