Python 如何修复此bytes对象的编码以仅保留实际文本并删除'\x00\x05*\x00\x00\x0e\x00bjbj';在蟒蛇3中?
问题: 我使用的API以字节对象的形式检索感兴趣的内容 字节对象(myobj)的值为: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解码,但是输出和输入是一样的。我还尝试了
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和搜索以前的问题通常是一个漫长的过程……试试看。