1.Opening a file in binary mode is simple but subtle. The only difference
from opening it in text mode is that
the mode parameter contains a 'b'
character.
........
4.Here’s one difference, though: a binary stream object has no encoding
attribute. That makes sense, right?
You’re reading (or writing) bytes, not
strings, so there’s no conversion for
Python to do.
In Python 2, a string was an array of
bytes whose character encoding was
tracked separately. If you wanted
Python 2 to keep track of the
character encoding, you had to use a
Unicode string (u'') instead. But in
Python 3, a string is always what
Python 2 called a Unicode string —
that is, an array of Unicode
characters (of possibly varying byte
lengths).
In Python 3, all strings are sequencesof Unicode characters. There is no
such thing as a Python string encoded
in UTF-8, or a Python string encoded
as CP-1252. “Is this string UTF-8?” is
an invalid question. UTF-8 is a way of
encoding characters as a sequence of
bytes. If you want to take a string
and turn it into a sequence of bytes
in a particular character encoding,
Python 3 can help you with that.
4.6. Strings vs. Bytes# Bytes are bytes; characters are an abstraction.
An immutable sequence of Unicode
characters is called a string. An
immutable sequence of
numbers-between-0-and-255 is called a
bytes object.
....
1.To define a bytes object, use the b' ' “byte literal” syntax. Each byte
within the byte literal can be an
ASCII character or an encoded
hexadecimal number from \x00 to \xff
(0–255).
我想你用的是Python 3。
然后,在Python 3中,由于来自文件的二进制流是字节流,所以分析来自文件的流的正则表达式必须用字节序列而不是字符序列来定义。
以及
以及
所以您将按如下方式定义正则表达式
而不是
更多解释如下:
15.6.4. Can’t use a string pattern on a bytes-like object
对于python 2.6,这对我很有用
在您的
re.compile
中,您需要使用bytes
对象,该对象由初始b
表示:这是Python 3对字符串和字节之间的区别的挑剔。
相关问题 更多 >
编程相关推荐