【问题标题】:In Python, how do you create a list from a file?在 Python 中,如何从文件中创建列表?
【发布时间】:2023-03-22 03:55:02
【问题描述】:

我正在尝试创建一个列表,其中文件的每一行都是它自己的该行中单词的列表。例如,如果文件读取:

apples oranges bananas

kale spinach

carrots tomatoes celery broccoli

然后我想阅读列表:

l = [[["apples"], ["oranges"], ["bananas"]], [["kale"], ["spinach"]], [["carrots"], ["tomatoes"], ["celery"], ["broccoli"]]]

最好的方法是什么?阅读线?

【问题讨论】:

  • 查看here 了解类似情况。
  • 请问您为什么希望每个项目都成为自己的单元素list?

标签: python list file


【解决方案1】:

你可以这样做..

with open(file) as f:
    print [[[j] for j in i.split()] for i in f if i]

例子:

>>> s = '''apples oranges bananas

kale spinach

carrots tomatoes celery broccoli'''.splitlines()
>>> [[[j] for j in i.split()] for i in s if i]
[[['apples'], ['oranges'], ['bananas']], [['kale'], ['spinach']], [['carrots'], ['tomatoes'], ['celery'], ['broccoli']]]

【讨论】:

  • if not i.isspace() 可能不是 if i,因为 i 仍将包含 \n 用于空行
  • 但只要存在新行,它就会显示空列表。 OP 没想到会这样。
  • 反之。 splitlines 丢弃换行符,但不会从文件中读取行
【解决方案2】:

你可以这样做:

L = []
with open('words.txt','r') as f:
    for line in f:
        L.append(line.split())

【讨论】:

  • PEP8 建议不要使用l 作为变量名
【解决方案3】:

当我试图向@AvinashRaj 解释时,你需要使用类似的东西 not i.isspace() 过滤掉空行(因为它们仍然包含换行符)

with open(file) as fin:
    print [[[j] for j in i.split()] for i in fin if not i.isspace()]

with 块称为上下文管理器。一旦到达块的末尾,它就会关闭fin。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多