在 python 中本地化和编辑字符串中空格 (“ ”) 后面的字符

Localizing and editing the character that comes after a space (" ") in a string in python

提问人:Paul 提问时间:8/18/2023 更新时间:8/18/2023 访问量:47

问:

几天前我开始使用 python,但被 codewars 的一项任务卡住了。 该任务可以这样解释:

编写一个转换字符串的函数,以便每个单词的首字母大写。

简而言之:我想使用策略来解决此任务,以便在字符串中,每个以空格开头的字母都大写。但是,我的方法行不通。

现在我的方法如下所示:

def to_jaden_case(string): #defining the function. (string) should be returned with the beginning of each word capitalized.
    for x in string:    
        if x[-1] == " ":   #I mean to say: if what comes before the element x is a blankspace, then:
            x.upper()      #Converting x to capital case using the .upper method.
            return(string) #Returning the final string.

如果我运行此代码,它不会返回错误,它只是不执行以所需方式修改字符串的任务。

请详细说明我方法中的错误,并帮助我修改它以使其工作!此外,展示和解释(请记住,我是一个绝对的初学者)解决任务的有效方法会很棒!

python 字符串 函数 大写

评论

0赞 Scott Hunter 8/18/2023
x.upper() ;它只是计算新字符串并返回它。x
0赞 jasonharper 8/18/2023
x将依次分配字符串的每个字符。 是那个字符的最后一个字符,换句话说,它与它本身完全相同。x[-1]x

答:

0赞 brainsoup82 8/18/2023 #1

因此,在查看代码时,我想到了几件事。

当你定义你的循环时,你说.for x in string

这意味着 的每个实例都将是字符串中的一个字符。这意味着这没有帮助,因为 x 不是一个数组,而是一个字符。xx[-1]

此外,当您使用时,您将获得大写值,但这是“丢失”的,因为您尚未将其分配给变量。x.upper()x

此外,您还需要考虑句子的第一个字符,因为这前面没有空格!您可以在语句中使用语句来检查这是否属实。orif

更进一步,您可以考虑使用变量遍历字符串的每个字符,例如,这意味着您可以分别使用 和 轻松查看当前和以前的字符。istring[i]string[i-1]

您不能直接更改字符串的字符(即 是不允许的。若要解决此问题,可以在函数的开头创建一个空白字符串,然后将每个字符附加到此新字符串中,可以是大写字符串,也可以是原始字符串。string[i] = string[i].upper()

以下代码将根据您的想法工作:

def to_jaden_case(string): 
    newstring=""
    for i in range(0,len(string)): 
        if string[i-1] == " " or i == 0:   
            newstring += string[i].upper()      
        else:
            newstring += string[i]
    return(newstring) #Returning the final string.

print(to_jaden_case('hello how are you'))

解决此问题的更有效方法是使用 拆分字符串,然后使用string.split()capitalize()

然后,您可以使用以下命令将它们与空间重新连接在一起join()

def to_jaden_case(string): 
    newstring=""
    words = string.split()
    newstring = " ".join(word.capitalize() for word in words)
    return(newstring) 

print(to_jaden_case('hello how are you'))

我在这里找到了一个非常有用的链接,它有更多解决此类问题的方法 - 非常值得一读!https://www.scaler.com/topics/replace-a-character-in-a-string-python/