Python 将多行返回到列表中

Python 将多行返回到列表中,python,Python,我的结果是: Alice Washington Street Doctor Wong Li Lincoln Street Teacher Suresh Hamilton Street Engineer 我可以通过以下方式将其转换为列表: >>>result_list = [y for y in (x.strip() for x in result.splitlines()) if y] #which i found it in SO >>>result_li

我的结果是:

Alice
Washington Street
Doctor
Wong Li
Lincoln Street
Teacher
Suresh
Hamilton Street
Engineer
我可以通过以下方式将其转换为列表:

>>>result_list = [y for y in (x.strip() for x in result.splitlines()) if y] #which i found it in SO
>>>result_list
['Alice', 'Washington Street', 'Doctor', 'Wong Li', 'Lincoln Street', 'Teacher', 'Suresh', 'Hamilton Street', 'Engineer']
但我需要的是

[['Alice', 'Washington Street', 'Doctor'], ['Wong Li', 'Lincoln Street', 'Teacher'], ['Suresh', 'Hamilton Street', 'Engineer']]
…基本上每3行将其分组


之后,我将使用pandas将其制表为姓名、地址和职业的三列。

按照适当的
开始、停止、步骤值范围,使用适当的值构建所需切片的列表:

result_list = [result_list[i:i+3] for i in range(0, len(result_list), 3)]
# [['Alice', 'Washington Street', 'Doctor'], ['Wong Li', 'Lincoln Street', 'Teacher'], ['Suresh', 'Hamilton Street', 'Engineer']]

使用适当的
开始、停止、步骤
值范围内的适当值建立所需切片的列表:

result_list = [result_list[i:i+3] for i in range(0, len(result_list), 3)]
# [['Alice', 'Washington Street', 'Doctor'], ['Wong Li', 'Lincoln Street', 'Teacher'], ['Suresh', 'Hamilton Street', 'Engineer']]

您可以像以前一样制作列表
结果\u列表
,然后使用列表理解和适当的切片

result_list = [y for y in (x.strip() for x in result.splitlines()) if y]

result_list = [result_list[i:i+3] for i in range(0, len(result_list), 3)]

# output : [['Alice', 'Washington Street', 'Doctor'], ['Wong Li', 'Lincoln Street', 'Teacher'], ['Suresh', 'Hamilton Street', 'Engineer']]

您可以像以前一样制作列表
结果\u列表
,然后使用列表理解和适当的切片

result_list = [y for y in (x.strip() for x in result.splitlines()) if y]

result_list = [result_list[i:i+3] for i in range(0, len(result_list), 3)]

# output : [['Alice', 'Washington Street', 'Doctor'], ['Wong Li', 'Lincoln Street', 'Teacher'], ['Suresh', 'Hamilton Street', 'Engineer']]

您了解代码中发生了什么吗?我看不到你做了什么努力,只是一些“复制粘贴”操作。我会像rep“lovers”那样给你一个答案,但你不会理解。@ElisByberi是一个非常流行的编码文本。;)@我已经浏览过了!
结果从哪里来?如果您将一个文件的全部内容读入一个字符串,那么如果您从原始源代码中一次读入一行,tt可能会更容易处理。您了解代码中发生了什么吗?我看不到你做了什么努力,只是一些“复制粘贴”操作。我会像rep“lovers”那样给你一个答案,但你不会理解。@ElisByberi是一个非常流行的编码文本。;)@我已经浏览过了!
结果从哪里来?如果你把一个文件的全部内容读入一个字符串,如果你从原始源代码中一次读入一行,tt可能会更容易处理。这里还有另一个选择,尽管如果你不熟悉这个习惯用法,它更难读懂:
[*zip(*[iter(result_list)]*3)]
是的,我刚刚意识到,我之前回答了一个类似的问题,确实需要偏移…@PM2Ring我喜欢这种方法。但它是神秘的:)@ElisByberi是真的,但在Python 2中,您可以简单地执行
zip(*[iter(result\u list)]*3)
,在早期的Python 3中,只需将其包装在
list()
中,这种分块技术的缺点是它会丢失最后的部分分块(尽管在某些情况下这可能是可取的)。OTOH,您可以在Py 2中使用
zip_longest
(或
izip_longest
)并提供一个fillvalue。这里还有另一个选项,尽管如果您不熟悉这个习惯用法,它更难阅读:
[*zip(*[iter(result_list)]*3)]
是的,我刚刚意识到,我之前回答了一个类似的问题,确实需要偏移…@PM2Ring我喜欢这种方法。但它是神秘的:)@ElisByberi是真的,但在Python 2中,您可以简单地执行
zip(*[iter(result\u list)]*3)
,在早期的Python 3中,只需将其包装在
list()
中,这种分块技术的缺点是它会丢失最后的部分分块(尽管在某些情况下这可能是可取的)。在Py 2中,您可以使用
zip_longest
(或
izip_longest
)并提供一个fillvalue。