2015-11-04 117 views
1

我想在Python中創建一個函數,其中輸入將是字符串並將其輸入到要返回的數組中。將字符串轉換爲單詞數組 - Python

例如:

Input: "The dog is red" 
Output: "The", "dog", "is", "red" 

我相信算法應該工作,但什麼都不會返回。從上面我可以假設,if語句沒有檢測到空間(「)

的代碼如下:

string = input("Input here:") 
def token(string): 
    start = 0 
    i = 0 
    token_list = [] 
    for x in range(0, len(string)): 
     if " " == string[i:i+1]: 
      token_list = token_list + string[start:i+1] 
      print string[start:i+1] 
      start = i + 1 
     i += 1 
    return token_list 

回答

2

你可以簡單地分割字符串

result=input.split(" ") 

string = raw_input("Input here:") 
def token(string): 
    start = 0 
    i = 0 
    token_list = [] 
    for x in range(0, len(string)): 
     if " " == string[i:i+1][0]: 
      token_list.append(string[start:i+1]) 
      #print string[start:i+1] 
      start = i + 1 
     i += 1 
    token_list.append(string[start:i+1]) 
    return token_list 

print token(string) 
+1

我會的,但該任務是要求我實現我自己的標記器。 – user287474

+0

謝謝!只是想知道,爲什麼你包含第二個「token_list.append(string [start:i + 1])」? – user287474

+0

@ user287474因爲你需要在'space'之後包含最後一個'string'.You在空格之前包括'string'.So last woule被排除在外 – vks

0

你可以修改你的功能,看起來像這樣:

string = input("Input here:") 
def token(string): 
    start, i = 0, 0 
    token_list = [] 
    for x in range(0, len(string)): 
     if " " == string[i:i+1]: 
      token_list.append(string[start:i]) 
      start = i + 1 
     i += 1 
    token_list.append(string[start:i]) 
    return token_list 

print token(string) 

如果您不想包含尾部空格,則只需追加至i。第二個append是必要的,因爲您的條件是檢查包含單詞的空間,但最後一個單詞不會有尾隨空格,而是會有行尾字符或空字符。