Python - 打开文件并将行转换为列

时间:2014-02-23 06:12:27

标签: python python-3.x

请原谅,我刚开始学习Python作为第一种编程语言。我打算打开一个文件,其中有一行数字,用空格分隔,我想打开文件,将行转换为一列。我能够通过几种方式做到这一点,问题不在于如何做到这一点,因为“我如何得到这个结果?”

这就是我所做的:

第一种方法:

Myfile = Open ('C:/Python/training_Examples/row.txt')
myfile = Myfile.read()
Myfiles = str(myfile)
for i in Myfiles:
    print (i)

第二种方法:

Myfile = Open ('C:/Python/training_Examples/row.txt')
myfile = Myfile.read()
Myfiles = str(myfile)
File = Myfiles.replace(" ", "\n")
for i in File:
    print (i)

第二个添加了一行,但它确实将空格分隔的数字转换为列,问题来自我的第一个方法,为什么它将行转换为一列?

2 个答案:

答案 0 :(得分:4)

要理解为什么会发生这种情况,请考虑以下简单示例

myString = '12345'
for character in myString:
    print character

输出将如下所示:

>>> 1
>>> 2
>>> 3
>>> 4
>>> 5

发生这种情况的原因是for循环遍历字符串中的每个字符,print语句在其自己的行上打印每个字符。

如果原始文件的第一行看起来像这样

This is the first line in the file

那么你的输出就是

>>> T
>>> h
>>> i
>>> s
>>> 
>>> i
>>> s
>>> 
>>> t
>>> h
>>> e
...

总而言之,字符串可以迭代,就像列表一样,因此for循环一次只给你一个字符,而print语句将每个字符放在它自己的行上。

答案 1 :(得分:0)

我不确定我是否理解得很好。您说您必须将文件中的行转换为列。

您的两个解决方案仅显示列中的数据,但不会将其写入文件。要真正将一个文件转换为另一个文件,您必须创建一个单独的文件并写入其中。

如果有多行,您的approches也不起作用。

一种方法是将文件读入行列表,将每行读入数字列表。然后迭代这个二维列表,将其写入新文件。