提问人:Paul 提问时间:8/18/2023 更新时间:8/18/2023 访问量:47
在 python 中本地化和编辑字符串中空格 (“ ”) 后面的字符
Localizing and editing the character that comes after a space (" ") in a string in python
问:
几天前我开始使用 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.
如果我运行此代码,它不会返回错误,它只是不执行以所需方式修改字符串的任务。
请详细说明我方法中的错误,并帮助我修改它以使其工作!此外,展示和解释(请记住,我是一个绝对的初学者)解决任务的有效方法会很棒!
答:
因此,在查看代码时,我想到了几件事。
当你定义你的循环时,你说.for x in string
这意味着 的每个实例都将是字符串中的一个字符。这意味着这没有帮助,因为 x 不是一个数组,而是一个字符。x
x[-1]
此外,当您使用时,您将获得大写值,但这是“丢失”的,因为您尚未将其分配给变量。x.upper()
x
此外,您还需要考虑句子的第一个字符,因为这前面没有空格!您可以在语句中使用语句来检查这是否属实。or
if
更进一步,您可以考虑使用变量遍历字符串的每个字符,例如,这意味着您可以分别使用 和 轻松查看当前和以前的字符。i
string[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/
评论
x.upper()
不变 ;它只是计算新字符串并返回它。x
x
将依次分配字符串的每个字符。 是那个字符的最后一个字符,换句话说,它与它本身完全相同。x[-1]
x