【问题标题】:How to put a file.txt into more than one list in python如何将file.txt放入python中的多个列表中
【发布时间】:2019-03-13 19:27:06
【问题描述】:

我试图将我的file.txt 放入一个列表中,然后将每个索引放入不同的列表中,而所有列表都保留在初始列表中。到目前为止,我已经能够将它添加到一个列表中。

这是我的代码:

with open("evenements.txt", "r", encoding="utf-8-sig") as evenement:
    liste_evenement = evenement.readlines()
    print(liste_evenement)

我希望我的代码返回:

[['index_1'],['index_2'], ...]

我必须使用for 循环吗?甚至是while?我有点困惑,因为\n 在我的evenements.txt 的每一行末尾都有一个\n,所以如果你能帮我解决这个问题,因为当我在字符串上使用它时我熟悉.strip() 但它不是处理清单。

编辑:这是我现在需要做的一个示例:

我的代码现在正在返回:

[['Musique/Shawn Phillips/2018-08-24/2018-08-24'], "Musique/L'avenue Royale fête l'été!/2018-08-25/2018-08-25"], 'Musique/Perséides musicales/2018-08-03/2018-08-03'], 'Musique/Gaétan Leclerc chante Félix et…/2018-08-17/2018-08-17']]

我现在需要做的是,我需要为我的代码中的每个 '/' 添加一个“,以便在 Musique 和 shawn 之间以及 phillips 和 2018 之间添加一个”,除了年/月/日之间(只是看看下面的结果。请记住,这只是代码的一部分,我的列表实际上包含 160 个索引。

这就是我要寻找的结果:

[['Danse', 'Samedi de danser...', 202, 202],

【问题讨论】:

  • 什么是每个索引?你没有提到任何索引。
  • 好吧,evenement.readlines() 返回我的 evenements.txt 列表,对吗?所以我希望我的列表中的每个索引都成为它自己的列表,而它们仍然保留在初始列表中,所以它会是这样的:[['index 1'],['index 2']]
  • 那么文件是否有每个文件的文件名/路径?
  • 您的第一句话:“我正在尝试将我的file.txt 放入一个列表中,然后将每个索引放入不同的列表中,而所有列表都保留在初始列表中。”绝对令人困惑。我想不通。正如@DYZ 所建议的,数据和所需输出的示例将大有帮助。
  • [['index_1'],['index_2'], ...] 中的索引应该来自哪里?这些是每行的一部分吗?为什么每个最里面的列表只有一个索引???

标签: python list file readlines


【解决方案1】:

您可以使用切片和理解:

with open("yourfile", "r") as f:
    number_of_lists = 4
    lists = [f[i::number_of_lists] for i in range(number_of_lists)]

不确定是否可以直接对文件进行切片;如果不制作一个包含所有行的列表。 正如在 cmets 中指出的那样,您不能直接使用 itertools.islice 这样做。或者列个清单

这会从文件中获取每个第 n 个元素,并用 n 偏移第 n 个元素的开头。

编辑:如果您希望每一行都成为一个列表,请阅读您的评论:

with open("file" ,"r") as f:
    list = [[x] for x in f]

EDIT2:去除换行符:

with open("yourfile", "r") as f:
    number_of_lists = 4
    lists = [[x.rstrip("/n") for x in f[i::number_of_lists]] for i in range(number_of_lists)]

【讨论】:

  • 您不能直接对文件对象进行切片,但您可以使用itertools.islice 这样做。
  • @SV-97 谢谢!我不知道我能做到这一点。请记住这一点!
  • @SV-97 但这是否可以像 AGN Gazer 建议的那样堆叠另一个 for 循环来删除 '\n'
  • 添加了去除换行符的版本
  • @SV-97 我总是收到错误消息'_io.TextIOWrapper' object is not subscriptable
猜你喜欢
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多