Python 不使用split()拆分文本时出现问题
拆分文本(text),其中文本是字符串,并通过拆分字符串文本返回单词列表。 见下例: sampleText=“作为Python的创建者,我想谈谈它的起源。” 拆分文本(sampleText) ['As'、'Python'、's'、'creator'、'I'、'd'、'like'、'to'、'say'、'a'、'minute'、'words'、'about'、'its'、'origins'] 您不能使用str类型中的方法split(),但是允许使用该类中的其他方法>。您不能使用诸如string.py之类的python库 这是我的代码:Python 不使用split()拆分文本时出现问题,python,string,split,Python,String,Split,拆分文本(text),其中文本是字符串,并通过拆分字符串文本返回单词列表。 见下例: sampleText=“作为Python的创建者,我想谈谈它的起源。” 拆分文本(sampleText) ['As'、'Python'、's'、'creator'、'I'、'd'、'like'、'to'、'say'、'a'、'minute'、'words'、'about'、'its'、'origins'] 您不能使用str类型中的方法split(),但是允许使用该类中的其他方法>。您不能使用诸如string.p
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)
当我运行它时,我得到以下信息:
”“是的
我已经尝试了很多事情来尝试和解决。对我来说,看起来事情太复杂了,基本上你需要做的就是逐个字符地检查文本,并将它们组合到单词中,一旦你找到空的空间,你就将其分离并添加到结果数组中。文本用完后,你只需返回数组
def splittext(text):
result = []
word = ""
for i in text:
if i != " ":
word += i
else:
result.append(word)
word = ""
result.append(word)
return result
对我来说,看起来事情太复杂了,基本上你需要做的就是逐个字符地检查文本,并将它们组合成单词,一旦你找到空的空间,你就把它分开并添加到结果数组中。文本用完后,你只需返回数组
def splittext(text):
result = []
word = ""
for i in text:
if i != " ":
word += i
else:
result.append(word)
word = ""
result.append(word)
return result
这应该起作用:
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)
这应该起作用:
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)
首先,你的函数名是错误的。你有
split(text)
,而这个练习特别要求splitText(text)
。如果你的类是自动评分的,例如由一个程序加载你的代码并试图运行splitText()
,你就会失败
接下来,这将是您了解字符串在Python中是一个iterable对象的好时机。您不必使用索引,只需直接遍历字符即可
for ch in text:
接下来,正如@Evert所指出的,您正试图构建一个列表,而不是一个字符串
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'、'minute'、'words'、'about'、'its'、'origins']
接下来,如果你坐下来盯着它看一会儿,你就会意识到你可以把一些情况结合起来。它可以很好地归结起来——试着把外部if移到内部,把它翻过来,看看你得到了什么。首先,你的函数名错了。你有
split(text)
这个练习特别要求splitText(text)
。如果您的课程是自动评分的,例如由一个程序加载您的代码并尝试运行splitText()
,您将失败
接下来,这将是您了解字符串在Python中是一个iterable对象的好时机。您不必使用索引,只需直接遍历字符即可
for ch in text:
接下来,正如@Evert所指出的,您正试图构建一个列表,而不是一个字符串
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'、'minute'、'words'、'about'、'its'、'origins']
接下来,如果你坐下来盯着它看一会儿,你就会意识到你可以将一些情况结合起来。它可以很好地归结为——试着通过将外部if移到内部来将其翻转过来,看看你得到了什么。你能用正则表达式作弊吗
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']
你能用正则表达式作弊吗
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']
这个练习不太清楚字符串要拆分哪些字符(显然,不是在“.”上),而且看起来相邻的拆分字符不需要拆分(逗号空格序列不会引入空字符串)。@Evert你不是说“将final_lst=[]设为空列表吗“?@whitebeard:正确,键盘滑了。因为我在编辑宽限期之外,所以重新添加正确的注释。你这样做是错误的:你必须建立一个列表,而不是一个新的字符串,使用
”,“
作为分隔符。给出的示例结果就是该列表的字符串表示形式。Makefinal\u lst=[]
一个空列表,然后将每个子字符串附加到该列表中。不要使用分隔符字符串,如“,”
等。对于子字符串,只需在输入字符串中的当前位置上循环,直到isalpha