Python 将字节字符串拆分为行

Python 将字节字符串拆分为行,python,python-3.x,Python,Python 3.x,如何将字节字符串拆分为行列表 在python 2中,我有: rest = "some\nlines" for line in rest.split("\n"): print line 为了简洁起见,上面的代码被简化了,但是现在经过一些正则表达式处理后,我在rest中有一个字节数组,我需要迭代这些行。将字节解码为unicode(str),然后使用str.split: Python 3.2.3(默认,2012年10月19日,19:53:16) [GCC 4.7.2]关于linux2 有关详

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

在python 2中,我有:

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

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

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

Python 3.2.3(默认,2012年10月19日,19:53:16)
[GCC 4.7.2]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>a=b'asdf\nasdf'
>>>a.split(“\n”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
类型错误:类型str不支持缓冲区API
>>>a=a.解码()
>>>a.split(“\n”)
['asdf','asdf']
>>> 
您也可以按
b'\n'
进行拆分,但我想您必须使用字符串,而不是字节。因此,请尽快将所有输入数据转换为
str
,并且只在代码中使用unicode,并在需要时将其转换为字节,以便尽可能晚地进行输出。

试试这个

rest=b“一些线”


rest=rest.decode(“utf-8”)


然后您可以执行
rest.split(“\n”)
没有理由转换为字符串。只需给出
split
bytes参数。用字符串拆分字符串,用字节拆分字节

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

字节数组不包含任何行。“线”是一个文本概念。你似乎在混淆这两者。你在Python3中是否有
rest=“some\nlines”
或者更确切地说是
rest=b“some\nlines”
?@Flavius然后尝试确定你的字符串在这个过程中的什么时候变成了bytes对象。。。那你就可以提高这一点了。干净又容易。。尽管如此,我看不出python在对
字节
类型应用
字符串时,没有理由不将其作为
字节
自动处理variable@gies0r同样的原因,Python一般不执行duck类型:它支持草率的代码,并强制Python使用“本机”编码