【问题标题】:How to split a multiline string with space-delimited integers to a list of lists for each line如何将具有空格分隔的整数的多行字符串拆分为每行的列表列表
【发布时间】:2020-06-18 19:08:55
【问题描述】:

有没有一种简单的方法可以将多行字符串分成不同大小的不同列表? 我在一个文件中有这个元素:

5 5 6 7 8 9
1 3 4 53 4
1 23
13 312
22 111 123

我想得到一个包含这些元素的数组/列表

list= [5,5,6,7,8,9],[1,3,4,53,4],[1,23],[13,312],[22,111,123]

它必须适用于任何文件(它们总是带有整数的文件),重要的是它在每个'\n'中划分数组/列表

我想避免使用外部导入(例如 NumPy),我只需要使用 Python 提供的工具即可。

【问题讨论】:

  • 你现在得到了什么?这可以在大约 4 行代码中完成。
  • 强制注释提醒您list 不是一个好的变量名,因为这样您就不能再使用内置的list 可调用对象了。 :)
  • “我已经被这个问题困扰好几天了”我们喜欢有人在问这里之前尝试一些东西,所以这很好。如果您在问题中包含您的尝试并解释它们是如何失败的,您的问题可能会获得一些支持。

标签: python string list


【解决方案1】:

这很容易。请记住,文件是逐行迭代的。

>>> # demo-list that imitates your file
>>> file = '''5 5 6 7 8 9
... 1 3 4 53 4
... 1 23
... 13 312
... 22 111 123'''.splitlines()
>>> 
>>> [map(int, line.split()) for line in file]
[[5, 5, 6, 7, 8, 9], [1, 3, 4, 53, 4], [1, 23], [13, 312], [22, 111, 123]]

【讨论】:

    【解决方案2】:

    您可以使用此代码将文本文件的所有行读取到一个列表中,然后从每一行创建一个列表:

    with open('path/to/your/file', 'r') as f:
        lists = [line.strip().split() for line in f]
    

    【讨论】:

    • readlines 是不必要的,你可以直接遍历f
    • @timgeb 谢谢。相应编辑 + 添加 strip() 以删除换行符。
    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2018-04-06
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多