在不使用包的情况下通过函数创建句子

Creating sentences by a function without using a package

我目前正在编写一个程序,该程序查看一个列表并将单词组合成句子,但每当我 运行 它时,我都会得到 [] 我不是 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)

您的 return sentence_list 比应有的缩进了一位。在 for 的第一次迭代之后,如果 else 条件执行而不是 if,那么你的函数 returns 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

您的函数 return 是一个空列表的原因是因为您的 return 在 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" 而不是 ==,因为每个字符都是一个单词。尝试打印 "character" 来查看。上面的程序有效并且 returns 结果

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

这就是你想要的。