【问题标题】:Converting elements of a list to a string and then iteratively listing each element in a text file将列表的元素转换为字符串,然后迭代地列出文本文件中的每个元素
【发布时间】:2021-10-03 11:19:02
【问题描述】:

考虑这个简单的例子

假设我们有以下列表:

[[2, 3, 4], [5, 6, 7], [8, 9, 10]]

我想将此列表中的每个列表写为文本文件中的单独行。即……

2 3 4
5 6 7
8 9 10

为此,我似乎必须将每个元素转换为字符串,因为object.write() 需要一个字符串(有没有更好的方法来做到这一点?)。现在,对于像 [2, 3, 4] 这样的单个列表,我一直在执行以下操作:

l = [2, 3, 4]
s = ' '.join(str(x) for x in l)
with open("file_open.txt", "+a") as file_object:
   file_object.write("\n")
   file_object.write(str(s))

对于像[[2, 3, 4], [5, 6, 7], [8, 9, 10]] 这样的更复杂的列表,我该如何执行此操作,其中每个元素在文本文件中迭代地列出为

2 3 4
5 6 7
8 9 10

注意:在我处理的实际情况中,它最初是一个numpy数组,我转换为一个列表,它的形式是

[[[1.5, 7.912834397348988, 148.46579073169295]], [[2.0, 7.912834397348988, 148.46579073169295]],...]]]

就像我给出的简单示例一样,我需要一个表单中的文本文件

1.5, 7.912834397348988, 148.46579073169295
2.0, 7.912834397348988, 148.46579073169295

它不必是一个列表。将其保留为 numpy 数组会更容易吗?

【问题讨论】:

  • 从内部开始加入
  • 对 2-D 列表中的每个 1-D 列表执行您对 1-D 列表所做的操作。

标签: python arrays string list


【解决方案1】:

您可以使用numpy.savetxt 来执行此操作

import numpy as np
data = np.array([[2, 3, 4], [5, 6, 7], [8, 9, 10]])
np.savetxt('file_open.txt', data)

默认的delimiter' 'newline'\n',但如果您喜欢其他参数,可以传递这些参数。

如果你要手写的话,它看起来像

data = [[2, 3, 4], [5, 6, 7], [8, 9, 10]]
with open('file_open.txt') as f_out:
    for line in data:
        f_out.write(' '.join(str(i) for i in line) + '\n')

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2015-05-15
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多