2012-11-09 21 views
1

在python中編寫一個hangman程序,當傳入一個包含多個字符串和單個字符串的文件時,我遇到了一個問題。Hang子手:文件I/O字符串和列表python

FILE:

打招呼的棕色狐狸

#initialize list 
wordList = [] 
# get and open file 
getFile = raw_input("Enter file name: ") 
filename = open(getFile, "r") 

def readWords(filename): 
    for line in filename: 
     # split any multi word line 
     line.split() 
     # add line to wordList 
     wordList.append(line) 

然而,出把單詞表用於讀取還是:

wordList = ['hello brown fox\n', 'dog\n', 'cat\n', 'water\n', 'jump\n'] 

我試圖讓「你好棕色狐狸」顯示爲3個獨立的字符串來做到這一點。

回答

0

您遇到的問題是,你正在分裂,但不節能的分裂路線:

>>> a = "hello brown fox" 
>>> a.split() 
['hello', 'brown', 'fox'] 
>>> a 
'hello brown fox' 
>>> 

這樣:

wordList.extend(line.split()) 

應該爲你

+1

延期,不追加 – georg

+1

唉謝謝!我嘗試追加line.split()之前,但給了我一個列表的列表,我不能相信我忘了擴展。 – crackhamster

+0

thans更正錯字太:) –

0

該做的伎倆split函數將結果作爲列表返回,因此直接附加它可能不是您想要的。你可以試試下面的例子:

def main(): 
    l_wordList = ['hello brown fox\n', 'dog\n', 'cat\n', 'water\n', 'jump\n'] 
    l_words_list = [] 
    l_word = '' 
    for word in l_wordList: 
     if isinstance(word.split(), list): 
      for token in word.split(): 
       l_words_list.append(token) 
     else: 
      l_words_list.append(word) 

    for word in l_words_list: 
     print(word) 

main() 

而結果將是

>>> 
hello 
brown 
fox 
dog 
cat 
water 
jump 
>>> 

問候,

Dariyoosh

1

您正在這個太複雜 - 只是.split整個文件內容:

with open(getFile, "r") as f: 
    words = f.read().split()