替换输入字符串中除第一个字符外的其他字符的实例。

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婷婷和 '$'.joining "他们。

另一答案
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)

以上是关于替换输入字符串中除第一个字符外的其他字符的实例。的主要内容,如果未能解决你的问题,请参考以下文章

java正则表达式替换html中除标签外的关键字内容

jquery中删除指定ul中除第一个li外的所有li的代码?

c_str() 输入一个字符串 - 除第一行之外的所有其他行都将丢失

如何用C语言将字符串中除字母的其他符号删除

Cygwin 替换文本文件中一个字符的所有实例

在字符串中创建所有字母替换组合