[英]Removes white spaces while reading in a file
with open(filename, "r") as f:
for line in f:
line = (' '.join(line.strip().split())).split()
誰能打破刪除空白的界限? 我了解line.strip()。split()首先從line
刪除開頭和結尾的空格,然后將所得的字符串拆分為空白並將所有單詞存儲在列表中。
但是剩余的代碼做什么?
行' '.join(line.strip().split())
創建一個string
,該string
由所有列表元素組成,並由一個空格字符分隔。 再次在該字符串上應用split()
方法將返回一個列表,其中包含字符串中所有用空格字符分隔的單詞。
這是一個細分:
# Opens the file
with open(filename, "r") as f:
# Iterates through each line
for line in f:
# Rewriting this line, below:
# line = (' '.join(line.strip().split())).split()
# Assuming line was " foo bar quux "
stripped_line = line.strip() # "foo bar quux"
parts = stripped_line.split() # ["foo", "bar", "quux"]
joined = ' '.join(parts) # "foo bar quux"
parts_again = joined.split() # ["foo", "bar", "quux"]
這是您要找的東西嗎?
該代碼是毫無意義的復雜。
有沒有必要strip
,如果你不帶參數的split
下一個樣品(不帶參數的split
下降開頭和結尾的副作用空格),所以line.strip().split()
可以簡化到line.split()
。
在join
和重新split
不改變任何事情, join
支第一split
帶空格一起回來,然后split
那些同樣的空間resplits。 所以,你可以節省花費的時間join
荷蘭國際集團才split
,只是保持原有的結果從第一split
,將其更改為:
line = line.split()
並且在功能上與原始版本相同:
line = (' '.join(line.strip().split())).split()
而且啟動速度更快。 我猜你被移交是書面的人誰不明白的代碼split
ING和join
荷蘭國際集團任,並只是把東西在他們的問題不理解它的所作所為 。
這是代碼的解釋:
with open(filename, "r") as f:
for line in f:
line = (' '.join(line.strip().split())).split()
第一個line.strip()
從line刪除line.strip()
和結尾的空白,而.split()
根據空白中斷到列表。
再次.join
將上一個列表轉換為空格分隔的一行。 最后, .split
再次將其轉換為列表。
該代碼是多余的line = (' '.join(line.strip().split())).split()
。 它應該是:-
line = line.split()
如果您再次想要strip
使用:-
line = map(str.strip, line.split())
我認為他們這樣做是為了保持恆定的空白量。 該條帶將刪除所有空格(可以是5個空格和一個制表符),然后將它們重新添加到單個空格中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.