Python中句子开头的大写

2024-03-29 01:43:36 发布

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

下面的代码用于一个赋值,它要求从用户输入一个句子字符串,并且每个句子的开头由一个函数大写。 例如,如果用户输入:“hello。这些是例句。他们有三个。” 输出应该是:“Hello。这些是例句。他们有三个。”

我创建了以下代码:

def main():
    sentences = input('Enter sentences with lowercase letters: ')
    capitalize(sentences)

#This function capitalizes the first letter of each sentence
def capitalize(user_sentences):
    sent_list = user_sentences.split('. ')
    new_sentences = []
    count = 0

    for count in range(len(sent_list)):
        new_sentences = sent_list[count]
        new_sentences = (new_sentences +'. ')
        print(new_sentences.capitalize())

main()

此代码有两个问题,我不确定如何更正。首先,它将每个句子打印成新行。第二,它在结尾处增加了一个句点。使用上面的示例输入,此代码的输出将是:

Hello.
These are sample sentences.
There are three of them..

有没有一种方法可以将输出格式化为一行并删除最后的句点?在


Tags: of代码用户hellonewmaindefcount
3条回答

以下是合理清洁输入的工作:

>>> s = 'hello. these are sample sentences. there are three of them.'
>>> '. '.join(x.capitalize() for x in s.split('. '))
'Hello. These are sample sentences. There are three of them.'

如果句号周围有更多不同的空格,则可能需要使用更复杂的逻辑:

^{pr2}$

这将规范化空白,这可能是也可能不是您想要的。在

def main():
    sentences = input('Enter sentences with lowercase letters: ')
    capitalizeFunc(sentences)

def capitalizeFunc(user_sentences):
    sent_list = user_sentences.split('. ')
    print(".".join((i.capitalize() for i in sent_list)))

main()

输出:

^{pr2}$

我认为这可能有帮助:

>>> sentence = input()    
>>> '. '.join(map(lambda s: s.strip().capitalize(), sentence.split('.')))

相关问题 更多 >