用函数造句而不使用packag

2024-09-29 00:12:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在写一个程序,它可以查看一个列表并遍历一个列表,将单词分组成句子,但是每当我运行它时,我就得到了[],而且我不能100%确定原因。下面是我的代码,用于读取文件、创建句子和列表的附加片段

def import_file(text_file):
    wordcounts = []
    with open(text_file, encoding = "utf-8") as f:
        pride_text = f.read()
        sentences = pride_text.split(" ")
        return sentences





def create_sentance(sentance):
    sentence_list=[]
    my_sentence=""
    for character in sentance:
        if character=='.' or character=='?' or character=='!':
            sentence_list.append(my_sentence) 
            my_sentence=""
        else:
            my_sentence=my_sentence + character
        return sentence_list

Preview of List 调用我的函数

pride=import_file("pride.txt")
pride=remove_abbreviations_and_punctuation(pride)
pride=create_sentance(pride)
print(pride)

Tags: textimport列表returnmydefcreatesentences
2条回答

函数返回空列表的原因是因为返回在for循环中。此外,“character”实际上是一个单词,因为列表中的每个元素都是一个单词。此程序工作:

def create_sentance(sentance):
    sentence_list=[]
    my_sentence=""
    for character in sentance:
        print character
        if '.' in character or '?' in character or '!' in character:
            sentence_list.append(my_sentence + ' ' + character)
            my_sentence=""
        else:
            my_sentence=my_sentence + ' ' + character
    return sentence_list
create_sentance(['I','will','go','to','the','park.','Ok?'])

您需要使用“in”而不是==因为每个字符都是一个单词。试着打印“字符”来看看这个。上面的程序工作并返回结果

[' I will go to the park.', 'Ok?']

这正是你想要的

您的return sentence_list缩进比应该缩进的要远一点。在for的第一次迭代之后,如果执行的是else条件而不是if,那么您的函数将返回初始化为[ ]sentence_list。不管怎样,如果sentence是20个字符长,那么您的for只会在给定的return调用位置运行一次

进行以下更改:

def create_sentance(sentance):
    sentence_list=[]
    my_sentence=""

    for character in sentance:
        if character=='.' or character=='?' or character=='!':
            sentence_list.append(my_sentence) 
            my_sentence=""
        else:
            # do you not want this in 'sentence_list'?
            my_sentence=my_sentence + character 
    return sentence_list

相关问题 更多 >