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 行的原因
当你在 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 行的原因