for x in text - python 怎么知道 x 应该读一行,而不是一个词,一个字母,...?

for x in text - how does python know x is supposed to read a line, not a word, a letter, ...?

当你在 python 中使用 for 循环时,例如逐行读取 txt,你可能会写:

txt = open("SomeTextFile.txt", "r")
for x in txt:
    print (x)

现在,我的问题是:python 如何“知道”它应该读取一行?为什么不是一个字母或一个单词?

我假设 txt 是从文件中读取的字符串,或者是文件对象(您使用 open() 创建的对象)。

默认情况下,行由换行符(字符'\n')分隔。虽然您可以将这些视为按 'Enter' 或 'Return' 键时输入的内容,但 it's not exactly true.

在您的代码中,Python 正在隐式搜索 '\n',并且每次找到一个时,它都会将其标记为一个元素。您可以很好地在字符串上使用 .split(some_string_goes_here) 方法并按空格或您选择的任何内容分隔。

许多这些“行”(或单词,或其他)被“分组”为 iterable,因此 for 循环可以一次访问一个。

来源:https://docs.python.org/tutorial/inputoutput.html#methods-of-file-objects

这取决于txt的类型,一般for循环每次迭代从池中取一个项目

>>> txt = 'bla'
>>> for x in txt: print(x)
... 
b
l
a
>>> txt = ['bla', 'foo', 'bar']
>>> for x in txt: print(x)
... 
bla
foo
bar

假设txt = open(<filename>)

你可能会想到一个

for x in txt:
    ...

作为

iterator = iter(txt)

while True:
    try:
        x = next(iterator)
        ...
    except StopIteration:
        break

iter(txt) 将 return 遍历文件行的迭代器,所以这就是你遍历 txt 行的原因