替换输入字符串中除第一个字符外的其他字符的实例。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换输入字符串中除第一个字符外的其他字符的实例。相关的知识,希望对你有一定的参考价值。
由于python中的字符串是不可改变的,我尝试了这个变通方法。我首先将字符串分解成它的字符组件, 把它们放在一个列表里. 然后,我在这个列表中循环,将我想修改的字符的第二次出现替换到目标字符中,最后部分当然是根据新的列表重新构建字符串。
def modify():
space = " "
# This is the input part
varstr = input("Insert a string to modify:\n> ")
if space in varstr:
print("Please insert a string without space")
modify()
varchar = input("Insert a SINGLE character to modify in $:\n> ")
if len(varstr) > 1:
print("Please insert a single character, without spaces")
counter = 0
liststr = []
stringout = ""
#Creating the list composed by the characters of the string
for i in varstr:
liststr.append(i)
#Looping through the string and substituting the character from its second occurence
for j in range(len(liststr)):
if counter >= 1 and liststr[j] == varchar:
liststr[j] = "$"
elif counter == 0 and liststr[j] == varchar:
counter += 1
for k in liststr:
stringout += k
return stringout
我的问题是:这段代码能不能做得更整洁一些?
编辑:样本输入可以是 "Google "和字符 "o"。那么样本输出将是
Go$gle
答案
你可以这样做。
char = "a"
stri = "santaclaus"
char.join("$".join(s.split(char)) for s in stri.split(char, 1))
# 'sant$cl$us'
这在第一条就被拆开了 char
的发生,并在""之后将代币连接起来。char.split
婷婷和 '$'.join
ing "他们。
另一答案
def modify():
while True:
varstr = input("Insert a string to modify:\n> ")
if ' ' in varstr:
print("Please insert a string without space")
else:
break
while True:
varchar = input("Insert a SINGLE character to modify in $:\n> ")
if len(varchar) > 1:
print("Please insert a single character, without spaces")
else:
break
return varstr[0] + varstr[1:].replace(varchar, '$')
另一答案
试试这个。
def modify():
while True:
varstr = input("Insert a string to modify:\n> ")
if len(varstr) > 0 and ' ' not in varstr:
break
print("Please insert a string without space")
while True:
varchar = input("Insert a SINGLE character to modify in $:\n> ")
if len(varchar) == 1 and varchar != ' ':
break
print("Please insert a single character, without spaces")
first = varstr.find(varchar) + 1
varstr = varstr[:first] + varstr[first:].replace(varchar, "$")
return varstr
关于问题代码的几个要点:
- 你可以使用如图所示的 while 循环,而不是递归,来重复输入。如果你真的想使用递归,你必须在代码中增加一个
return
之后modify()
调用。 - 如果你想把一个字符串转换为字符列表,你可以使用
strlist = list(varstr)
. 然后,你可以突变,并返回到字符串使用''.join(strlist)
以上是关于替换输入字符串中除第一个字符外的其他字符的实例。的主要内容,如果未能解决你的问题,请参考以下文章
jquery中删除指定ul中除第一个li外的所有li的代码?