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

Python-打开文件并将行转换为列,python,python-3.x,Python,Python 3.x,对不起,我刚开始学习Python作为第一种编程语言。我想打开一个文件,其中有一行数字,由空格分隔,我想打开该文件,将行转换为一列。我有两种方法可以做到这一点,问题不在于如何做到这一点,而在于“我是如何得到这个结果的?” 以下是我所做的: 第一种方法: 第二种方法: 第二个增加了一个行,但是它把空间分隔的数字转换成列,问题是从我的第一个方法,为什么它把行转换成一列?来理解为什么会发生这种情况,只需考虑下面的简单例子 myString = '12345' for character in myStr

对不起,我刚开始学习Python作为第一种编程语言。我想打开一个文件,其中有一行数字,由空格分隔,我想打开该文件,将行转换为一列。我有两种方法可以做到这一点,问题不在于如何做到这一点,而在于“我是如何得到这个结果的?”

以下是我所做的:

第一种方法: 第二种方法:

第二个增加了一个行,但是它把空间分隔的数字转换成列,问题是从我的第一个方法,为什么它把行转换成一列?

来理解为什么会发生这种情况,只需考虑下面的简单例子

myString = '12345'
for character in myString:
    print character
输出如下所示:

>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
发生这种情况的原因是
for
循环在字符串中的每个字符上迭代,而
print
语句在其自己的行上打印这些字符

如果原始文件的第一行是这样的

这是文件中的第一行

那么您的输出将是

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

总结,字符串可以重复,就像列表一样,所以循环的<代码>每次给你一个字符,而打印< /COD>语句将每个字符放在自己的行上。

以理解为什么会发生这种情况,只需考虑下面的简单示例

myString = '12345'
for character in myString:
    print character
输出如下所示:

>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
发生这种情况的原因是
for
循环在字符串中的每个字符上迭代,而
print
语句在其自己的行上打印这些字符

如果原始文件的第一行是这样的

这是文件中的第一行

那么您的输出将是

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

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

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

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

此外,如果有多条线,您的方法也不起作用


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

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

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

此外,如果有多条线,您的方法也不起作用


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

回答得好!我想明确指出,默认情况下,
print
函数将自己的换行符添加到传递给它的任何字符串中。因此,执行
print“\n”
将打印一个换行符,后跟一个额外的换行符。因此,在上面提供的示例中,如何将这些单词分隔到它们自己的行中?这样,每个单词都是独立的。如果您想在单独的一行上打印每个单词(不要使用“行”这个词,因为它意味着您不想要的其他内容),您可以用换行符替换每个空格。例如,您可以执行myString=myString.replace(“”,“\n”)然后打印(myString)。但是你应该在一个单独的问题中问这个问题。很好的答案!我想明确指出,默认情况下,
print
函数将自己的换行符添加到传递给它的任何字符串中。因此,执行
print“\n”
将打印一个换行符,后跟一个额外的换行符。因此,在上面提供的示例中,如何将这些单词分隔到它们自己的行中?这样,每个单词都是独立的。如果您想在单独的一行上打印每个单词(不要使用“行”这个词,因为它意味着您不想要的其他内容),您可以用换行符替换每个空格。例如,您可以执行myString=myString.replace(“”,“\n”)然后打印(myString)。你应该在一个单独的问题中问这个问题。我在下面给出了答案,但我想知道为什么你要将文件中的数据转换为“行”。打印文件内容时,它会显示在输出终端的多行上,但这实际上是因为数据是一行。这只是打印方式的副产品。我在下面给出了答案,但我想知道为什么要将文件中的数据转换为“行”。打印文件内容时,它会显示在输出终端的多行上,但这实际上是因为数据是一行。这只是打印出来的东西的副产品。