[英]Python: Read whitespace separated strings from file similar to readline
在Python中, f.readline()
返回文件f
的下一行。 也就是說,它從f
的當前位置開始,讀取直到遇到換行符,返回中間的所有內容並更新f
的位置。
現在我想完全相同,但是對於空格分隔的文件(不僅僅是換行符)。 例如,考慮帶有內容的文件f
token1 token2
token3 token4
token5
所以我正在尋找一些函數readtoken()
這樣在打開f
之后, f.readtoken()
的第一次調用返回token1
,第二次調用返回token2
等。
為了提高效率並避免長行或非常大的文件出現問題,應該沒有緩沖。
我幾乎可以肯定,這應該可以通過標准庫“開箱即用”。 但是,我沒有找到任何合適的函數或重新定義readline()
的分隔符的方法。
你需要創建一個包裝函數; 這很容易:
def read_by_tokens(fileobj):
for line in fileobj:
for token in line.split():
yield token
請注意, .readline()
不只是逐個字符地讀取文件,直到遇到換行符為止; 以塊(緩沖區)讀取文件以提高性能。
上面的方法按行讀取文件,但在空白處產生結果拆分。 使用它像:
with open('somefilename') as f:
for token in read_by_tokens(f):
print(token)
因為read_by_tokens()
是一個生成器,你需要直接遍歷函數結果,或者使用next()
函數逐個獲取標記:
with open('somefilename') as f:
tokenized = read_by_tokens(f)
# read first two tokens separately
first_token = next(tokenized)
second_token = next(tokenized)
for token in tokenized:
# loops over all tokens *except the first two*
print(token)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.