当你在python中使用for循环时,例如逐行读取txt,你可能会写:
txt = open("SomeTextFile.txt", "r")
for x in txt:
print (x)
现在,我的问题是:python如何"知道"它应该读取一行?为什么不是一个字母或一个单词?
这取决于txt
的类型,一般来说,for loop每次迭代都会从池中获取一个项目
>>> 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()
创建的内容)。
默认情况下,行由换行符(字符'n'
)分隔。虽然您可以将这些视为按"Enter"或"返回"键时键入的内容,但这并不完全正确。
在您的代码中,Python 隐式搜索'n'
,每次找到一个时,它都会将其标记为元素。您完全可以在字符串上使用.split(some_string_goes_here)
方法,并按空格或您选择的任何内容进行拆分。
其中许多"行"(或单词或其他任何内容)被"分组"为可迭代对象,因此 for 循环可以一次访问一个。
资料来源:https://docs.python.org/tutorial/inputoutput.html#methods-of-file-objects
假设txt = open(<filename>)
你可能会想到一个
for x in txt:
...
如
iterator = iter(txt)
while True:
try:
x = next(iterator)
...
except StopIteration:
break
iter(txt)
将返回遍历文件行的迭代器,因此这就是遍历 txt 行的原因