splitText ( text )其中 text 是一个字符串,并通过拆分字符串 text 返回单词列表。 见下面的例子:
sampleText =“作为Python的创建者,我想谈谈它的起源。”
splitText(sampleText)
['As','Python','s','creator','I','d','like','to','say','a','few','words ','关于',''','起源']
您不能使用str类型中的split()方法,但允许使用类中的其他方法。您不能使用python库,例如string.py。
这是我的代码:
def split(text):
final_lst = ""
length = len(text)
for x in range(length):
if text[x].isalpha() == True:
final_lst = final_lst + text[x]
else:
final_lst = final_lst + ", "
final_len = len(final_lst)
for a in range(final_len):
if final_lst[:a] == " " or final_lst[:a] == "":
final_lst = "'" + final_lst[a]
if final_lst[a:] == " " or final_lst[a:] == ", ":
final_lst = final_lst[a] + "'"
elif final_lst[:a].isalpha() or final_lst[a:].isalpha():
final_lst[a]
print(final_lst)
split(sampleText)
当我运行它时,我得到了这个:
“A
我尝试过许多尝试和解决的事情。
答案 0 :(得分:2)
首先,您的函数名称错误。您有split(text)
,此练习专门要求splitText(text)
。如果您的课程是自动评分的,例如只需加载代码并尝试运行splitText()
的程序,您就会失败。
接下来,这将是您了解字符串是Python中的可迭代对象的好时机。您不必使用索引 - 只需直接遍历字符。
for ch in text:
接下来,正如@Evert指出的那样,您正在尝试构建一个列表,而不是一个字符串。所以使用正确的Python语法:
final_list = []
接下来,让我们考虑如何一次处理一个角色并完成这项工作。当您看到一个角色时,您可以确定它是否是字母字符。你还需要一条信息:你之前在做什么?
如果你在“单词”中,并且得到“更多单词”,你可以追加它。
如果你是一个“单词”,并且得到“一言不发”,你已经到了单词的末尾,应该将它添加到你的列表中。
如果你“不言而喻”,并且得到“一言不发”,你可以忽略它。
如果你“不是一个字”,而你得到“字”,那就是一个新词的开头。
现在,你怎么知道你是否在说话?简单。保持一个单词变量。
def splitText(text):
"""Split text on any non-alphabetic character, return list of words."""
final_list = []
word = ''
for ch in text:
if word: # Empty string is false!
if ch.isalpha():
word += ch
else:
final_list.append(word)
word = ''
else:
if ch.isalpha():
word += ch
else:
# still not alpha.
pass
# Handle end-of-text with word still going
if word:
final_list.append(word)
return final_list
sampleText = "As Python's creator, I'd like to say a few words about its origins."
print(splitText(sampleText))
输出是:
['As','Python','s','creator','I','d','like','to','say','a','few','words ','关于',''','起源']
接下来,如果你坐下来盯着它看一段时间,你会发现你可以结合一些案例。它很好地归结 - 尝试将外部if移到里面,然后看看你得到了什么。
答案 1 :(得分:1)
对我来说,看起来你的事情太复杂了,基本上所有你需要做的就是通过字符串查看char,并将它们组合成单词,一旦找到空白区域,你将它分开并添加到结果数组。用完文本后,只需返回数组。
mystring
答案 2 :(得分:1)
这应该有效:
smapleText ='作为Python的创作者,我想谈谈它的起源。'
def split(text):
result =[]
temp=""
length = len(text)
for x in range(length):
if text[x].isalpha():
temp = temp+text[x]
else:
result.append(temp)
temp=""
print result
split(smapleText)
答案 3 :(得分:0)
你能用正则表达式作弊吗?
import re
sampleText = "As Python's creator, I'd like to say a few words about its origins."
result = re.findall(r'\w+', sampleText)
>>> result
['As', 'Python', 's', 'creator', 'I', 'd', 'like', 'to', 'say', 'a', 'few', 'words', 'about', 'its', 'origins']
答案 4 :(得分:0)
def stringSplitter(string):
words = []
current_word = ""
for x in range(len(string)):
if string[x] == " ":
words.append(current_word)
current_word = ""
else:
current_word += string[x]
return words