无法使用split()分割文本

时间:2016-03-22 22:14:10

标签: python string split

  

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

    
  

我尝试过许多尝试和解决的事情。

5 个答案:

答案 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