Python 什么使字符串集合有资格成为一行?

Python 什么使字符串集合有资格成为一行?,python,Python,下面的代码将获取每个字符并尽可能多地运行循环。但是,当我将同一行保存在文本文件中并执行相同的操作时,循环只对一行运行一次。这有点令人困惑。我可以考虑的可能原因是,第一种方法是通过将a视为列表来运行循环。如果我错了,请纠正我。还让我知道如何在代码本身中创建一行,而不是先将其保存在文件中,然后使用它 >>> a="In this world\n" >>> i=0 >>> for lines in a: ... i=i+1 ...

下面的代码将获取每个字符并尽可能多地运行循环。但是,当我将同一行保存在文本文件中并执行相同的操作时,循环只对一行运行一次。这有点令人困惑。我可以考虑的可能原因是,第一种方法是通过将a视为列表来运行循环。如果我错了,请纠正我。还让我知道如何在代码本身中创建一行,而不是先将其保存在文件中,然后使用它

>>> a="In this world\n"
>>> i=0
>>> for lines in a:
...     i=i+1
...     print i
...
1
2
3
4
5
6
7
8
9
10
11
12
13

你试图在a上循环,这是一个字符串。不管一个字符串中有多少换行符,当你在它上面循环时,你将一个字符接一个字符

如果要在一组行中循环,必须使用列表:

lines = ["this is line 1", "this is another line", "etc"]
for line in lines:
    print line
如果您有一个包含一组换行符的字符串,并希望将其转换为行列表,请使用拆分方法:

在读取文件时逐行执行的原因是,实现Python的人员认为,如果对文件进行迭代时生成的是行集合而不是字符集合,那么它会更有用


但是,文件和字符串是不同的东西,您不必期望它们以相同的方式工作。

您正在尝试循环一个字符串。不管一个字符串中有多少换行符,当你在它上面循环时,你将一个字符接一个字符

如果要在一组行中循环,必须使用列表:

lines = ["this is line 1", "this is another line", "etc"]
for line in lines:
    print line
如果您有一个包含一组换行符的字符串,并希望将其转换为行列表,请使用拆分方法:

在读取文件时逐行执行的原因是,实现Python的人员认为,如果对文件进行迭代时生成的是行集合而不是字符集合,那么它会更有用


但是,文件和字符串是不同的东西,您不必期望它们以相同的方式工作。

在行上循环时只需更改变量的名称:

i = 0
worldLine ="In this world\n"
for character in worldLine:
    i=i+1
    print i

count = 0
readFile = open('myFile','r')
for line in readFile: 
    count += 1
现在应该清楚发生了什么。 保留有意义的名称将节省大量调试时间

考虑采取以下行动:

i = 0
worldLine =["In this world\n"]
for character in worldLine:
    i=i+1
    print i

如果您想在仅由worldLine组成的行列表上循环

在行上循环时只需更改变量的名称:

i = 0
worldLine ="In this world\n"
for character in worldLine:
    i=i+1
    print i

count = 0
readFile = open('myFile','r')
for line in readFile: 
    count += 1
现在应该清楚发生了什么。 保留有意义的名称将节省大量调试时间

考虑采取以下行动:

i = 0
worldLine =["In this world\n"]
for character in worldLine:
    i=i+1
    print i

如果您想在仅由worldLine组成的行列表上循环

谢谢Michael把事情弄清楚了,现在我明白为什么行为会不同了。@Abacus-没问题。如果我的答案对您有效,请单击我答案左侧的复选标记,将您的问题标记为已解决。如果你的问题的另一个答案比我的答案对你更有帮助,那么你应该点击该答案的复选标记。谢谢Michael把事情弄清楚,现在我明白了为什么行为会有所不同。@Abacus-没问题。如果我的答案对您有效,请单击我答案左侧的复选标记,将您的问题标记为已解决。如果你的问题的另一个答案比我的答案对你更有帮助,那么你应该点击该答案的复选标记。