Python 试图替换文本,但字符串未更改
编写一个Python程序,从给定字符串中获取一个字符串,该字符串的第一个字符的所有匹配项都已更改为“$”,但第一个字符本身除外 我的代码是这样的:Python 试图替换文本,但字符串未更改,python,string,function,Python,String,Function,编写一个Python程序,从给定字符串中获取一个字符串,该字符串的第一个字符的所有匹配项都已更改为“$”,但第一个字符本身除外 我的代码是这样的: stringa = "restart" def swaping(palavra): prim = palavra[0] for i in palavra: if prim in palavra and prim not in palavra[0]: palavra.re
stringa = "restart"
def swaping(palavra):
prim = palavra[0]
for i in palavra:
if prim in palavra and prim not in palavra[0]:
palavra.replace(prim, "$")
return palavra
print(swaping(stringa))
它应该返回resta$t
,但它返回了相同的表单,restart
有人知道为什么它不起作用吗?示例解决方案与我的完全不同,他们选择将字符串一分为二,最后将它们绑定在一起。字符串保持不变的原因是
if
语句始终返回False:
- palavra中的
始终为真,因为prim
是字符串prim
中的第一个字符palavra
始终为False,因为prim not in palavra[0]
是prim
,因此它始终在自身中palavra[0]
和
子句组合在一起,每次都会得到一个False
而且,str.replace
将替换它找到的每个事件(大多数情况下)。在Python中,除了将字符串一分为二并执行解决方案所执行的操作外,没有办法替换特定索引处的字符
无论如何,有一个更简单的解决方案使用str.replace
:
def交换(字符串):
返回字符串[0]+字符串[1:]。替换(字符串[0],“$”)
只是一个简单的替换()
,如下所示:
stringa = "restart"
def swaping(palavra):
prim = palavra[0]
for i in palavra:
if prim in palavra and prim not in palavra[0]:
palavra.replace(prim, "$")
return palavra
print(swaping(stringa))
string='restart'
new_str=string.replace('r','$')。replace('$','r',1)
纽约街
输出:
“resta$t”在您的代码中,我可以看到它永远不会进入
if
循环,因为prim not In palavra[0]
在分配prim=palavra[0]
时总是给出False
,所以您的“字符串”不会更改。
我建议使用以下代码:
stringa = "restart"
def swaping(palavra):
prim = palavra[0]
palavra = ''.join([prim,palavra[1:].replace(prim,'$')])
return palavra
print(swaping(stringa))
您需要迭代字符串并将第一个字符与每个元素匹配(如果匹配),然后在结果字符串中添加
$
,否则在结果字符串中添加相同的字符并返回该结果字符串
def func(string):
if len(string)<2:
return string
first = string[0]
result = first
for i, v in enumerate(string[1:]):
if v==first:
result+='$'
else:
result+=v
return result
result = func('restart')
print(result)
您可以尝试
返回prim+palavra[1:].replace(prim,$)
除了其他答案之外,.replace()
函数不会修改现有字符串,而不是循环;它返回一个新的修改字符串,但您不保存此结果。