在python中使用for循环迭代文本文件-为什么这样做?
我目前正在学习如何用Python创建拼写检查器。在一些教程中,我看到如下内容:在python中使用for循环迭代文本文件-为什么这样做?,python,loops,for-loop,text,Python,Loops,For Loop,Text,我目前正在学习如何用Python创建拼写检查器。在一些教程中,我看到如下内容: def ReadDictionaryFile(dictionaryfilename): dictionarywords = [] # stores words in a list inputfile = open(dictionaryfilename, "r") for line in inputfile:
def ReadDictionaryFile(dictionaryfilename):
dictionarywords = [] # stores words in a list
inputfile = open(dictionaryfilename, "r")
for line in inputfile: # iterate over the lines of the file
word = line.strip() # whitespace removed
dictionarywords.append(word) # appends word to the list
inputfile.close()
return dictionarywords
但我不明白python怎么知道把它分成几行
在inputfile:中的行中,“line”只是一个变量,那么代码的哪一部分实际上告诉它在\n停止
python中是否有一些内置功能,用于循环遍历文本时在遇到下一次迭代时\n开始下一次迭代?我找不到关于这个的任何信息
感谢您的帮助 这是因为open
返回的file对象在其特殊的“dunder”(双下划线)\uuuuuu iter\uu
方法中实现了该行为。这是在for
循环中隐式迭代对象时调用的方法
例如,考虑这个代码:
类行迭代器:
定义初始化(自我,内容):
self.contents=内容
定义(自我):
self.contents.splitlines()的收益率
它=行迭代器(““”您好
福巴
再见(“”)
对于其中的行:
打印(“行是”,repr(行))
这是打印出来的
The line was 'Hello'
The line was 'Foobar'
The line was 'Goodbye'
循环的与显式版本完全相同:
国际热核实验堆(iter)线路的:
打印(“行是”,repr(行))
或者是非常明确的版本:
用于其中的行。\uuuu iter\uuuuu()
打印(“行是”,repr(行))
原始版本,以及使用iter(it)
的版本,只需调用\uuuuu iter\uuuu
方法即可。标准库广泛使用此模式,您可以在自己的代码中使用它来使对象按需要运行
(从x产生的基本上意味着“将每个元素x传递给循环”。这是有效的,因为open
返回的文件对象在其特殊的“dunder”(双下划线)方法中实现了该行为。这是在for
循环中隐式迭代对象时调用的方法
例如,考虑这个代码:
类行迭代器:
定义初始化(自我,内容):
self.contents=内容
定义(自我):
self.contents.splitlines()的收益率
它=行迭代器(““”您好
福巴
再见(“”)
对于其中的行:
打印(“行是”,repr(行))
这是打印出来的
The line was 'Hello'
The line was 'Foobar'
The line was 'Goodbye'
循环的与显式版本完全相同:
国际热核实验堆(iter)线路的:
打印(“行是”,repr(行))
或者是非常明确的版本:
用于其中的行。\uuuu iter\uuuuu()
打印(“行是”,repr(行))
原始版本,以及使用iter(it)
的版本,只需调用\uuuuu iter\uuuu
方法即可。标准库广泛使用此模式,您可以在自己的代码中使用它来使对象按需要运行
(x的屈服基本上意味着“将每个元素x传递到循环中”。是的,它是一个内置功能。文件对象是迭代器是的,它是一个内置功能。文件对象是迭代器是特定的,文件对象不仅仅是iterable,它们是迭代器(因此它们实现了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu next\uuuuuu
)是特定的,文件对象不仅仅是iterable,它们是迭代器(因此它们实现\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu