[英]Python Code meaning: str.split(line[:-1],',')
我有這段代碼:
f = open('scores.txt','r')
L = []
for line in f:
L = L + map(float,str.split(line[:-1],','))
print(L)
當我對Python完全陌生時,能否請您解釋以下命令的含義及其參數:str.split(line [:-1],',')
您有一個scores.txt
文件,其中包含很多數字。 這些數字用逗號分隔。 您逐行瀏覽文件並將所有這些數字放入一個大列表中。
每行以換行符號結尾。 這就是為什么用line[:-1]
切掉最后一個符號的原因。
數字之間用逗號分隔,因此您可以選擇這行,並在每個逗號處使用line[:-1].split(',')
對其進行剪切/分割。
從文件讀取時,您將所有內容讀取為文本。 為了允許進行進一步的計算,您告訴Python將其視為數字,更准確地說是浮點數/有理數。
順便說一句,我認為map在Python 3中無法像這樣工作。但是等效的代碼是:
f = open('scores.txt','r')
L = []
for line in f:
L = L + [float(s) for s in line[:-1].split(',')]
print(L)
這對於讀取文件的行是逗號分隔的浮點列表的文件來說非常糟糕(Python 2.x):
line
並手動剝離換行符來遍歷文件:
line[:-1]
是剝離尾隨換行符的一種不好方法:它在具有\\ r \\ n的Windows上中斷 open()
默認為newline=None
,這將支持通用換行符,並正確處理\\ r,\\ n或\\ r \\ n。 或者,您可以顯式設置open(..., newline=??)
。 然后按原樣使用line
,不需要hacky line[:-1]
str.split(line[:-1], ',')
逗號分隔的一行float拆分為float字符串列表。 除了等效於line[:-1].split(',')
。 但是現在,由於有了換行符的支持,我們可以執行line.split(',')
,堆更清晰了。
L = [] for line in f: L = L + map(float, str.split(line[:-1],','))
是一種附加到列表列表的舊2.x方法。 我們也可以使用列表推導代替map(float, ...)
。 我們可以使用嵌套的列表理解來消除for line in f:
循環中的for line in f:
。 所以:
f = open('scores.txt','r') L = [ [ float(flt) for flt in line.split(',') ] for line in f ]
甚至更好的是,我們使用上下文處理程序來自動處理打開,關閉和相關異常。 因此,代碼簡化為:
with open('scores.txt','r') as f:
L = [ [ float(x) for line in f x in line.split(',') ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.