对于文本中的 X - Python 如何知道 X 应该读取一行,而不是一个单词、一个字母,..?



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

相关内容