2016-09-29 69 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'] 
相关问题