read stdin,readlines。改变输出顺序

时间:2013-02-08 05:10:28

标签: python string for-loop stdin readlines

我在Mac上工作并且有一个关于python的问题。 我正在使用名为rectangle.txt的.txt文件,在文件中它看起来像这样:

abcde
fghij
klmno

我需要在使用stdin时阅读这些内容。但这就是我需要我的程序:

afk
bgl
chm
din
ejo

到目前为止,我有一个程序可以读取所有行并将它们拆分并打印出来。 CODE EDITED

So when I changed my code to this:

for line in sys.stdin.readline():
    ls1 = line
    print ls1

我收到了清单:

a
b
c
d
e

所以现在我只需要遍历其他那些,但我无法弄明白

我从命令行运行此函数:

python rectangle.py < rectangle.txt

我正在努力学习所有这些,所以不要给我答案,我希望有人帮助向我解释这一点,希望我能理解。

另外,除了这个.txt文件输入。我的程序也将使用这些输入进行测试:

123
456
789

A
B
C

所有人都做与上面相同的事情。再次感谢您提前帮助我。我一直在研究这个问题几个小时,似乎无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

值得信赖的zip功能可以提供帮助:

>>> lines = ["abc", "def", "ghi"]
>>> result = [''.join(x) for x in zip(*lines)]
>>> result
['adg', 'beh', 'cfi']

说明:zip完全符合您的期望 - 将每个给定迭代中的元素聚合到一个新列表中。我们必须单独传递zip的迭代,而不是列表which is what *lines does。最后我们只将单个字符数组连接在一起,因为我们需要一个字符串数组而不是一个字符数组的数组。

答案 1 :(得分:0)

我假设每行的输入必须是相同的长度。

在这种情况下,有一个输入字符串列表以及这些字符串循环之一的长度。

[“abcde”,“fghij”,“kilmn”]从这里开始,你注意到每个字符串中第一个字符的模式是什么? “a”+“f”+“k”。