Capitalization of each sentence in a string in Python 3

后端 未结 5 1133
-上瘾入骨i
-上瘾入骨i 2021-01-22 10:25

This should be easy but somehow I\'m not quite getting it.

My assignment is:

Write a function sentenceCapitalizer that has one parameter of type

5条回答
  •  礼貌的吻别
    2021-01-22 10:51

    You are trying to use a string method on the wrong object; words is list object containing strings. Use the method on each individual element instead:

    words2 = [word.capitalize() for word in words]
    

    But this would be applying the wrong transformation; you don't want to capitalise the whole sentence, but just the first letter. str.capitalize() would lowercase everything else, including the J in Joe:

    >>> 'my name is Joe'.capitalize()
    'My name is joe'    
    

    Limit yourself to the first letter only, and then add back the rest of the string unchanged:

    words2 = [word[0].capitalize() + word[1:] for word in words]
    

    Next, a list object has no .join() method either; that too is a string method:

    string2 = '. '.join(words2)
    

    This'll join the strings in words2 with the '. ' (full stop and space) joiner.

    You'll probably want to use better variable names here; your strings are sentences, not words, so your code could do better reflecting that.

    Together that makes your function:

    def sentenceCapitalizer (string1: str):
        sentences = string1.split(". ")
        sentences2 = [sentence[0].capitalize() + sentence[1:] for sentence in sentences]
        string2 = '. '.join(sentences2)
        return string2
    

    Demo:

    >>> def sentenceCapitalizer (string1: str):
    ...     sentences = string1.split(". ")
    ...     sentences2 = [sentence[0].capitalize() + sentence[1:] for sentence in sentences]
    ...     string2 = '. '.join(sentences2)
    ...     return string2
    ... 
    >>> print (sentenceCapitalizer("hello. my name is Joe. what is your name?"))
    Hello. My name is Joe. What is your name?
    

提交回复
热议问题