下面是比較文件的第二行與輸入的代碼。這只是工作,如果沒有什麼別的文件中,我將如何改變代碼,以便它仍然在文件中有文本的許多行工作。比較輸入與文件
name = input("Enter name: ")
with open("numbers") as f:
lines = f.readlines() # a list of all the lines
if lines[1] == name: # the second line (0 indexing)
下面是比較文件的第二行與輸入的代碼。這只是工作,如果沒有什麼別的文件中,我將如何改變代碼,以便它仍然在文件中有文本的許多行工作。比較輸入與文件
name = input("Enter name: ")
with open("numbers") as f:
lines = f.readlines() # a list of all the lines
if lines[1] == name: # the second line (0 indexing)
你寫if lines[1] == name: foo()
。若要將此所有的線,使用:
lines = f.readlines()
for line in lines:
if line.rstrip() == name:
foo()
的rstrip()
末刪除空格,換行一樣。
更緊湊,如果你正在處理每一行,不需要索引,你可以遍歷文件,而不是在通過readlines方法返回的列表:
with open("numbers") as f:
for line in f:
if line.rstrip() == name:
foo()
當你的文件只有2條線,第二行將是你的預期,所以你的程序工作。
當您的行數多於2行時,第二行以新行字符\n
結尾。只要確保在比較之前擺脫最後一個字符。
if lines[1].rstrip("\n") == name:
會做。
由於@Rawing
for循環,通過所有行列表循環,並將它們與輸入 – Hunter
的問題是在該行的末尾換行符做。您必須在將其與名稱進行比較之前將其刪除。 –
[用Python讀取換行符分隔文件並放棄換行符的最佳方法?]的可能重複(https://stackoverflow.com/questions/544921/best-method-for-reading-newline-delimited-files-in-python丟棄新的) –