python-3.x 将字节字符串拆分为行

quhf5bfb  于 2022-11-26  发布在  Python
关注(0)|答案(3)|浏览(177)

如何将一个字节字符串拆分为一系列行?
在python 2中,我有:

rest = "some\nlines"
for line in rest.split("\n"):
    print line

为了简洁起见,上面的代码被简化了,但是现在经过一些正则表达式处理后,我在rest中有一个字节数组,我需要迭代这些行。

9fkzdhlc

9fkzdhlc1#

没有理由转换成字符串。只要给予split bytes参数。用字符串拆分字符串,用字节拆分字节。

>>> a = b'asdf\nasdf'
>>> a.split(b'\n')
[b'asdf', b'asdf']

另外,由于要在换行符上拆分,可以使用splitlines()strbytes都可以使用)来稍微简化一下:

>>> a = b'asdf\nasdf'
>>> a.splitlines()
[b'asdf', b'asdf']
sc4hvdpw

sc4hvdpw2#

将字节解码为unicode(str),然后使用str.split

Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = b'asdf\nasdf'
>>> a.split('\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Type str doesn't support the buffer API
>>> a = a.decode()
>>> a.split('\n')
['asdf', 'asdf']
>>>

你也可以用b'\n'来分割,但是我想你必须处理字符串而不是字节,所以尽快把你所有的输入数据转换成str,并且在你的代码中只使用unicode,在需要输出的时候尽可能晚地把它转换成字节。

wrrgggsh

wrrgggsh3#

试试这个...
rest = b"some\nlines"
rest=rest.decode("utf-8")
那么你可以做rest.split("\n")

相关问题