问题:
我正在使用一个API,该API以字节对象的形式检索感兴趣的内容。
bytes对象(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()并替换以除去字符串的某些部分,但是,有太多不同的字符。
任何建议都很好。
谢谢!
你差不多了。组合选项1和2:
new_obj = ''.join(c for c in my_obj.decode('utf-8', 'ignore') if c.isprintable())
但是,您new_obj
将是:
'This is the sentence I want to keep.7'
这是因为,快到快要结束my_obj
了'\x017'
。这是一个值为0x01的字节,后跟一个character '7'
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句