我有一個字符串可以從文件中讀取,有些情況下readline()會返回一個空行,我需要檢查下面的截圖,如果有人能向我解釋爲什麼它給出了一個錯誤的結果:爲什麼pycharm給出錯誤的條件檢查?
你可以從截圖中,行=「\ n」,爲什麼表達的評估結果爲假看?
確實有其他方法來檢查空白行,但我只是很好奇地想知道爲什麼我的腳本不工作。
謝謝。
謝謝。
我有一個字符串可以從文件中讀取,有些情況下readline()會返回一個空行,我需要檢查下面的截圖,如果有人能向我解釋爲什麼它給出了一個錯誤的結果:爲什麼pycharm給出錯誤的條件檢查?
你可以從截圖中,行=「\ n」,爲什麼表達的評估結果爲假看?
確實有其他方法來檢查空白行,但我只是很好奇地想知道爲什麼我的腳本不工作。
謝謝。
謝謝。
您的輸入文件很可能包含一些令人討厭的字符,如"zero width space"或"invisible separator"。您可以輸出這些如果您打印(或評價)repr(line)
:
with open('data.txt', 'w') as f:
f.write(u"\n")
f.write(u"\u200B\n") # zero width space
f.write(u"\u2063\n") # invisible separator
f.write(u"\n")
with open('data.txt', 'r') as f:
for line in f:
print(repr(line))
如果調試以上,你就可以複製你的行爲對線2和3,而不是線1和4。注意,這些字符在大多數字體中都不可見(它們不佔用任何空間!),並且僅僅打印/顯示它們(就像在調試器中懸停一樣)將不會顯示它們甚至在那裏。
在PyCharm中的「評估表達式」對話框中,簡單評估「repr(line)
」以查看真正的內容。
謝謝。就像你說的,讀入的第一行確實包含一些不可見的字符:0d0a0d0a,實際上它是兩個空行 – PasLeChoix
'\n'
不是空行。 ""
是。所以你可以檢查if line == "":
或if not line:
。如果你從文件中讀取python將從行中刪除\n
。所以如果它是空的(只有新行字符),它將返回一個空字符串。
沒用,實際上我是用'line ==「」',它只是返回錯誤的結果 – PasLeChoix
@PasLeChoix然後給我們展示一些代碼請參考 –
f = open('2014ips.txt') for line in f: if行==「」: 繼續 – PasLeChoix
如果您需要使用空行測試,請使用'line =='「'not'line ==」\ n「'。換行符不是空白字符串。 –