61

如何将字节字符串拆分为行列表?

在 python 2 中,我有:

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

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

4

3 回答 3

115

没有理由转换为字符串。只需给出split字节参数。用字符串分割字符串,用字节分割字节。

>>> a = b'asdf\nasdf'
>>> a.split(b'\n')
[b'asdf', b'asdf']
于 2013-02-26T17:33:28.600 回答
22

将字节解码为 un​​icode (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,并在需要时将其转换为字节以尽可能晚地输出。

于 2012-12-13T10:40:13.203 回答
7

试试这个.. 。

rest = b"some\nlines"
rest=rest.decode("utf-8")

那么你可以做rest.split("\n")

于 2012-12-13T10:49:15.383 回答