shk*_*kim 0 python string python-3.7
首先,我有bytes类对象“myst”。然后我str使用将其转换为一个类str(),并使用该strip()方法删除空格。问题是没有删除空格“\r\n”。
>>> myteststring=b'asdf\r\n'
>>> str(myteststring)
"b'asdf\\r\\n'"
>>> str(myteststring).strip()
"b'asdf\\r\\n'"
Run Code Online (Sandbox Code Playgroud)
但是,strip()在byte类上使用该方法可以正常工作。
>>> byteclass=b'asdf\r\n'
>>> byteclass.strip()
b'asdf'
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
我认为当我使用时str(),生成的字符串包含双反斜杠\\。这可能是我问题的根源。
>>> myteststring
b'asdf\r\n'
>>> str(myteststring)
"b'asdf\\r\\n'" # << this is problem ??
Run Code Online (Sandbox Code Playgroud)
当传递一个bytes没有encoding参数的对象时,该str函数将简单地调用该repr函数以返回给定bytes对象的字符串表示形式,这就是str(myteststring)返回的原因"b'asdf\\r\\n'",并\r\n使用额外的反斜杠进行转义。
您可以bytes通过向str函数传递一个encoding参数来正确地将对象转换为字符串:
>>> myteststring=b'asdf\r\n'
>>> str(myteststring, encoding='utf-8')
'asdf\r\n'
>>> str(myteststring, encoding='utf-8').strip()
'asdf'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |