如何插入双字母

时间:2017-05-17 04:14:25

标签: python string insert

所以我试图将python中的一些错综复杂的东西现在只是为了摆动,我试图在我的字符串中插入东西。我想返回一个字符串的副本,所有设置字母加倍。我的信件是l m n q t

所以我的钱输出看起来像是mmonney

这是来自我剥离字母的不同尝试的代码,我试图想出如何更改这个,所以我加倍列表中的字母。有什么建议吗?

def double(str):
  letters = ('l', 'm', 'n', 'q', 't')
  for char in str:
    if c.lower() in letters:
      str = str.replace(c,"")
    return str

5 个答案:

答案 0 :(得分:1)

请注意,如果使用这么多str替换它,它将不会使您的函数具有很高的可伸缩性。

def double(word):
    letters = ('l', 'm', 'n', 'q', 't')
    return "".join([p*2 if p in letters else p for p in word])

通常python中的字符串修改操作(以及其他一些语言很慢)因为字符串是不可变的。每次进行替换调用时,您实际上是从头开始创建一个全新的字符串。

另一方面,这里给出的方法是处理两个列表。附加到列表是一种快速操作。

答案 1 :(得分:0)

你可以直接遍历字符串,然后两次添加字符。

def double(str):
    new_str = ""
    letters = ('l', 'm', 'n', 'q', 't')

    for c in str:
        if c.lower() in letters:
            new_str += c + c

    return new_str

print(double("money"))

答案 2 :(得分:0)

<强>方法一:

当您在for循环中迭代字符串时,循环迭代将限制为字符串的初始长度。因此,当您尝试使用字符副本替换时,将忽略尾随字符。

因此,您可以拥有一个new_string,根据您的条件添加字符!

def double(str):
  letters = ('l', 'm', 'n', 'q', 't')
  new_str=''
  for c in str:
    if c.lower() in letters:
      new_str += c
    new_str+=c
  return new_str
print double('money')

<强>方法2:

您还可以使用正则表达式来简化操作。

加入你的元组以形成一个字符串,re.sub(regex_pattern,substitution_string,your_string)将匹配的regex组替换为第二个参数给出的值! (\1用于获取匹配的组)

st='money'
letters = ('l', 'm', 'n', 'q', 't')
import re
print re.sub('(%s)'%'|'.join(letters),'\\1\\1',st)

输出:

mmonney

答案 3 :(得分:0)

不要将str用作变量名称。 str is builtin class in python

试试这段代码

_string = "money" # example


def double(string):
    letters = ('l', 'm', 'n', 'q', 't')
    result = list()
    for s in string:
        if s in letters:
            result.append(s.lower() * 2)
        else:
            result.append(s.lower())
    return "".join(result)


if __name__ == "__main__":
    print double(_string)

输出

mmonney

答案 4 :(得分:0)

def doub(inputStr):
   specialChars = ['l','m','n','q','t']
   outputStr = ""
   for i in inputStr:
       if i in specialChars:
          outputStr = outputStr + i + i
       else:
          outputStr = outputStr + i
   return outputStr

print doub("aldamnasamnahoqtk")