2016-09-29 74 views
0

所以我有這樣的代碼在這裏:分離字符串爲單個單詞(Python)的

#assign a string to variable 
x = "example text" 
#create set to store separated words 
xset = [] 
#create base word 
xword = "" 
for letter in x: 
    if letter == " ": 
     #add word 
     xset.append(xword) 
     #add space 
     xset.append(letter) 
     #reset base word 
    else: 
     #add letter 
     xword = xword + letter 
     #back to line 9 
#print set with separated words 
print xset 

所以非常自我解釋,對於該函數查找在x每個字母,如果它不是一個空間它將其添加到xword(想象它像xword = "examp" + "l",這將使xword = "exampl")。如果它是一個空格,它將xword和一個空格添加到該集合,並重置xword

我的問題是,"text"這個詞沒有被包含在最終的集合中。當這個代碼運行,並且該集合被打印時,它給出這個:[['example','']

那麼爲什麼"text"不出現在集合中呢?

+0

在你循環中,只有當你點擊一個空格時纔會添加一個單詞。在最後一個單詞之後沒有空格,所以最後一個單詞不會被添加。嘗試在循環結束後向列表中添加'xword'(它是一個列表,而不是一個集合)。 – khelwood

+3

我想你是在做這個課程的一部分。在這種情況下,這是有道理的。否則:'xset = x.split()' – zvone

+1

'x.split()'是好的,但是如果你想保留列表中的空間,請執行: 're.split(「()」,x)' – dpjanes

回答

0

你需要有一個更追加在循環後添加的最後一個字

#assign a string to variable 
x = "example text" 
#create set to store separated words 
xset = [] 
#create base word 
xword = "" 
for letter in x: 
    if letter == " ": 
     #add word 
     xset.append(xword) 
     #add space 
     xset.append(letter) 
     #reset base word 
    else: 
     #add letter 
     xword = xword + letter 
     #back to line 9 
xset.append(xword) 
#print set with separated words 
print xset 
1

因爲當你的代碼x到達的空間其追加xword。但是這隻發生在到達空間時。由於有文本之後沒有空格,最後的結果不追加到xset此外,你不進行重置xword

#assign a string to variable 
x = "example text" 
#create set to store separated words 
xset = [] 
#create base word 
xword = "" 
for letter in x: 
    if letter == " ": 
     #add word 
     xset.append(xword) 
     #add space 
     xset.append(letter) 
     #reset base word 
     xword = "" 
    else: 
     #add letter 
     xword = xword + letter 
     #back to line 9 
#print set with separated words 
xset.append(xword) 
print xset 

輸出:

['example', ' ', 'text'] 
+0

好吧,那有幫助。謝謝! – Solusin

0

只需使用string.split()。該命令將返回字符串中的單詞列表。下面是它的文檔:https://docs.python.org/2/library/string.html

如果你的價值觀是空間分隔的做這樣的事情:

r.split() 
Out[26]: ['some', 'text', 'here'] 

如果你的分隔符從空間的不同,你可以像這樣指定它:

s.split(',') 
Out[21]: ['some', 'text', 'here'] 
相關問題