指数资本化
Index capitalization
我想创建一个函数,根据提供的数组将字符串大写。我当前的函数接受 2 个参数:要更改的字符串和一个对应于要更改的字母的数组。我的函数如下所示:
def capitalize(s, ind):
for i in ind:
try:
s = s.replace(s[i], s[i].upper())
except IndexError:
print("Sorry, index is not range!")
return s
当我尝试了几个示例时,这个功能起初似乎有效,例如:
capitalize("abc",[1,2])
#Output: aBC
但是,我不明白为什么这个例子失败了:
capitalize("abracadabra",[2,6,9,10])
#Output: AbRAcADAbRA - should be abRAcADAbRA
为什么我的第一个字母突然变成大写了?任何帮助将不胜感激。
str.replace
替换它找到的第一个匹配项。所以 s.replace(s[10], s[10].upper())
(这是一个 a
)不会替换索引 10 处的 a
,而是它在字符串中找到的第一个 a
。
相反,将您的字符串转换为列表:
def capitalize(s, ind):
split_s = list(s)
for i in ind:
try:
split_s[i] = split_s[i].upper()
except IndexError:
print(f"Sorry, index is not in range! ({i})")
return "".join(split_s)
print(capitalize("abracadabra",[2,6,9,10,50]))
输出:
Sorry, index is not in range! (50)
abRacaDabRA
我想创建一个函数,根据提供的数组将字符串大写。我当前的函数接受 2 个参数:要更改的字符串和一个对应于要更改的字母的数组。我的函数如下所示:
def capitalize(s, ind):
for i in ind:
try:
s = s.replace(s[i], s[i].upper())
except IndexError:
print("Sorry, index is not range!")
return s
当我尝试了几个示例时,这个功能起初似乎有效,例如:
capitalize("abc",[1,2])
#Output: aBC
但是,我不明白为什么这个例子失败了:
capitalize("abracadabra",[2,6,9,10])
#Output: AbRAcADAbRA - should be abRAcADAbRA
为什么我的第一个字母突然变成大写了?任何帮助将不胜感激。
str.replace
替换它找到的第一个匹配项。所以 s.replace(s[10], s[10].upper())
(这是一个 a
)不会替换索引 10 处的 a
,而是它在字符串中找到的第一个 a
。
相反,将您的字符串转换为列表:
def capitalize(s, ind):
split_s = list(s)
for i in ind:
try:
split_s[i] = split_s[i].upper()
except IndexError:
print(f"Sorry, index is not in range! ({i})")
return "".join(split_s)
print(capitalize("abracadabra",[2,6,9,10,50]))
输出:
Sorry, index is not in range! (50)
abRacaDabRA