将字符串分成三列写入txt文件

时间:2018-04-02 17:10:43

标签: python python-3.x

我有三个字符串,每个字符串中有361个数字。我需要做的是将字符串打印到文本文件中的三个单独的列中。

a = [1,2,3,4,5]

b = [1,2,3,4,5]

c = [1,2,3,4,5]

变为

1 1 1

2 2 2

3 3 3

4 4 4

5 5 5

5 个答案:

答案 0 :(得分:1)

由于它们的长度都相同,所以非常简单:

ll = [a, b, c]
length = 361
with open("file.txt", "w") as output:
    for i in range(length):
        output.write(" ".join([str(l[i]) for l in ll]) + "\n")

首先,您将所有列表放在列表中以便于访问。然后,对于每个索引,使用空格作为分隔符,将每个列表中的每个项目与该索引组合成一个字符串。我在创建字符串的行中包含str(),以避免由于列表中项目的类型而导致错误。

答案 1 :(得分:1)

如果你可以使用numpy

A = np.array([a,c,b]).transpose()
np.savetxt('output.txt',A)

答案 2 :(得分:1)

zip将列表放在一起,然后遍历生成的元组。

for t in zip(a, b, c):
    print(*t)

答案 3 :(得分:0)

你可以将所有列表按元素列入" tuple"

的一个列表
zip(a,b,c)

结果将如下所示:[(1,1,1),(2,2,2),...] 然后你可以"映射"来自" tuple"的结果to" string"

map(lambda tup: "%s %s %s" % tup, zip(a,b,c))

Pythonically,

["%s %s %s" % tup for tup in zip(a,b,c)]

现在您将获得一个字符串列表。然后你现在可以写入文件了。为了使其成为多线,我们需要' \ n'焦炭。我们可以使用方便的"加入"函数加入列表并用换行符分隔它们。

所以我的解决方案会是这样的:

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = [1, 2, 3, 4, 5]
with open("targetfile.txt", "w") as f:
    f.write("\n".join(["%s %s %s" % tup for tup in zip(a,b,c)]))

答案 4 :(得分:0)

尝试这种方法:

a = [1, 2, 3, 4, 5]

b = [1, 2, 3, 4, 5]

c = [1, 2, 3, 4, 5]


print(list(zip(a,b,c)))

输出:

[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)]