在换行符上拆分字节变量

时间:2016-04-07 15:48:10

标签: python variables for-loop

这是一个不寻常的要求,我将不胜感激! :)

我有一个python变量,为简单起见,我们可以称之为'output'

当我打印输出时,我得到以下内容:

b"word1\nword2\nword3\n"

如果我能打印,我会喜欢它

word1
word2
word3
word4

我试图拆分变量,并将其输入到for循环,但没有成功。我很乐意将输出写入操作系统中的文件,并使用bash来解决问题。

谢谢!

5 个答案:

答案 0 :(得分:2)

对我来说,听起来你的字符串已经转义换行符。 str.split在这里不会帮助您,也不会str.splitlines。你需要解码转义:

>>> print s
word1\nword2\nwored3\n
>>> print s.decode('string-escape')
word1
word2
wored3

答案 1 :(得分:1)

您需要执行此操作(有关详细信息,请参阅string.split函数)...

for word in output.decode('utf-8').split('\n'):
    print word

而且你不需要印刷文字 - 你可以随心所欲地做任何事情。该循环将迭代output中的每一行。

答案 2 :(得分:0)

听起来您正在使用Python 3并调用等效的

>>> print(b"foo\nbar\nbaz")
b'foo\nbar\nbaz'

这是str(bytes)实际操作:字节字符串的(Unicode)字符串表示形式。通过首先对它进行解码,您可以获得更优雅的Python 3打印内容。

>>> print(b"foo\nbar\nbaz".decode('utf-8'))
foo
bar
baz

答案 3 :(得分:0)

假设使用Python3。您有一个字节字符串(字节),不同于unicode字符串(str)。

bstring = b"word1\nword2\nword3\nword4"

换行符'\n'u'\n'(unicode字符串)相同,并且不同于b'\n'。 如果您仅对拆分感兴趣,可以使用b'\n'作为分隔符:

for w in bstring.split(b'\n'):
    print(w)

这将打印字节字符串b'word1',... 如果要使用常规字符串,则必须在拆分之前或之后进行解码,如其他解决方案所示:

for w in bstring.decode().split('\n'):
    print(w)

这使用您的默认编码(通常为utf-8),如果您希望使用其他编码,则可以将其作为参数传递给decode()。您可以在Python manual

中找到更多信息

答案 4 :(得分:-1)

output = b"word1\nword2\nword3\nword4\n"
for w in output.split():
    print(w)