簡體   English   中英

讀取文件時刪除空格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM