在Python中转置文本文件

时间:2014-03-20 14:47:54

标签: python

我有一个文本文件,我想用Python进行转置。

例如,给定以下文件:

asdfg
qwert

我希望脚本的输出是一个包含以下内容的文本文件:

aq
sw
de
fr
gt

最简单,最“pythonic”的方法是什么?我能够想出的最多就是将第一个文件的数据读入数组。

3 个答案:

答案 0 :(得分:0)

<强>设置

首先让我们为那些尚未设置它的人设置我们的文件,但您可以跳到下面的阅读部分,只需确保更改文件路径变量以反映文件的位置和名称:

import textwrap

              # dedent removes the extra whitespace in front of each line
text = textwrap.dedent("""
    asdfg
    qwert""").strip() # strip takes off the first newline

filepath = '/temp/foo.txt'

with open(filepath, 'w') as writer:
    writer.write(text)

阅读文件

现在我们已经准备好了文件,让我们使用with上下文管理器将其读回文本变量(所以如果我们有错误,它会自动为我们关闭文件,我们可以很容易地恢复。):

with open(filepath, 'rU') as reader:
    text = reader.read()

操纵文字

这就是魔术,分割文本的行,以便我们有两个字符串的列表,将该列表扩展为两个参数(*)传递给zip然后按字符顺序遍历字符串,用空字符串连接对,然后打印该列表的每个成员:

list_of_strings = [''.join(chars) for chars in zip(*text.splitlines())]

for string_i in list_of_strings:
    print(string_i)

应该打印

aq
sw
de
fr
gt

答案 1 :(得分:0)

利用readlines()获取每行的列表。

对于干净的方法,请尝试zip:

a = "asdfg"
b = "qwert"

print zip(a, b)

给出:

[('a', 'q'), ('s', 'w'), ('d', 'e'), ('f', 'r'), ('g', 't')]

从那里,遍历每个元素并打印出结果。

答案 2 :(得分:0)

也许这就是你想要的:

with open("/Users/wy/Desktop/wy.txt", "r") as cin:
    lines = cin.read()
lineStr = lines.split('\n')

with open("/Users/wy/Desktop/res.txt", "w") as cout:
    for ele in zip(*lineStr):
        cout.write(''.join(list(ele)) + '\n')