2017-10-11 152 views
1

我的目標是打開狗檔案,將它轉換成列表,然後讓使用者輸入狗的類型,如果它與狗列表中的狗名稱相符,則說它是正確的。如何將文本文件中的數據轉換爲列表?

dog_file = open("Dogs.txt", "r") 
dogs = dog_file.readlines() 
print(dogs) 
data = input("Enter a name: ") 
if data == dogs: 
    print("Success") 
else: 
    print("Sorry that didn't work") 
+0

'如果數據== dogs'不會因爲你針對一個列表平等的測試工作。也許'如果數據在狗' – roganjosh

+0

你幾乎在那裏。只需更改'if'檢查。 '如果數據+'\ n'在狗中:' – balki

回答

3

dogs是一個字符串列表,而data是一個字符串。你想使用in操作,以檢查是否data包含dogs

if data in dogs: 
    # do sth 
+0

事情是當我鍵入一個答案時,我得到了else語句的結果。 –

+1

也許在每行末尾有\ n或\ r這樣的空格字符,試試:'dog = [dog.strip()for dog_file.readlines()]' – Leistungsabfall

+0

是的,謝謝你們。 –

0

試試這個:

dog_list = [] 
for dog in dogs: 
    dog_list.append(dog) 

這將文件的每一行追加到一個列表。我們檢查是否有列表中的嘗試狗:

dog_type = input("Enter a dog: ") 
if dog_type in dog_list": 
    print("Success") 
1

如果您想將.TXT寫入到一個數組(轉換列出),試試這個:

with open("Dogs.txt", "r") as ins: 
    dogarray = [] 
    for line in ins: 
     line = line.strip() 
     dogarray.append(line) 
    print (dogarray) 

這會將它成一個數組,並使用.strip函數在每一行新行後刪除不需要的\n。你現在需要做的就是從數組中讀取數據。

1

試試這個:

dog_file = open("Dogs.txt", "r") 
dogs = dog_file.readlines() 
# you want to strip away the spaces and new line characters 
content = [x.strip() for x in dogs] 
data = input("Enter a name: ") 
# since dogs here is a list 
if data in dogs: 
    print("Success") 
else: 
    print("Sorry that didn't work") 
相關問題