當您在 python 中使用 for 回圈時,例如逐行讀取 txt,您可能會寫:
txt = open("SomeTextFile.txt", "r")
for x in txt:
print (x)
現在,我的問題是:python 如何“知道”它應該讀取一行?為什么不是一個字母或一個詞?
uj5u.com熱心網友回復:
它取決于 的型別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
uj5u.com熱心網友回復:
我假設txt要么是從檔案中讀取的字串,要么是檔案物件(您使用創建的東西open())。
默認情況下,行由換行符(字符'\n')分隔。雖然您可以將這些視為按下“Enter”或“Return”鍵時輸入的內容,但這并不完全正確。
在您的代碼中,Python 隱式搜索'\n',并且每次找到一個時,都會將其標記為一個元素。您可以很好地.split(some_string_goes_here)在字串上使用該方法并按空格或您選擇的任何內容進行分割。
許多這些“行”(或單詞,或其他)被“分組”為一個iterable,因此 for 回圈可以一次訪問一個。
來源:https ://docs.python.org/tutorial/inputoutput.html#methods-of-file-objects
uj5u.com熱心網友回復:
假設txt = open(<filename>)
你可能會想到一個
for x in txt:
...
作為
iterator = iter(txt)
while True:
try:
x = next(iterator)
...
except StopIteration:
break
iter(txt)將回傳迭代檔案行的迭代器,這就是你迭代 txt 行的原因
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436058.html
上一篇:如何在保持元素順序的同時將串列的最小值移動為第一個元素
下一篇:房間分類程式中的索引超出范圍
