从给定字符串中删除字母

时间:2017-01-09 21:39:59

标签: python string python-2.7

所以我的作业分配是从给定的字符串中删除给定名称的首字母,使用用户输入来定义变量。当我运行下面的脚本时,它只注册一个名称。

def removeChar(initials, string):
    initials = initials
    string = string
    for char in initials:
        modified = string.replace(char, "")
    print modified
    return modified



def getInitials(name, string):
    initials = ""
    for i in name.lower().split():
        initials += i[0]
    print initials
    removeChar(initials, string)



def main():
    name = raw_input("What is your name? \n")
    string = raw_input("What string would you like to remove your initials from? \n")
    getInitials(name, string)

这是输出:

What is your name? 
John Doe
What string would you like to remove your initials from? 
Arjajbian Ndigdhts

Arjajbian Nights

为什么不删除第一个首字母?

3 个答案:

答案 0 :(得分:6)

你的问题在于:

modified = string.replace(char, "")

您始终在原始字符串上使用replace,因此它会从原始字符串中删除每个字符并返回一个新字符。只需使用string = string.replace(char, "")

即可

否则,您的函数将始终返回一个字符串,该字符串是删除了 last 的原始字符串。

答案 1 :(得分:0)

虽然@ juanpa.arrivillaga指出了你的问题,但还有更多的Pythonic方法可以从你的输入字符串中删除字符jd;使用generator expression

>>> input_str = "Arjajbian Ndigdhts"
>>> ''.join(c for c in input_str if c.lower() not in 'jd')
'Arabian Nights'
>>> 

这可以通过迭代input_str并仅将字符传递给{{1>} not ''.join()j

答案 2 :(得分:0)

你不需要

//gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack -g prog2.c -o prog2

因为这并没有告诉您使这个变量与它已经相同 也 我想是这个

 initials = initials
    string = string

你创建了一个名为modified = string.replace(char, "") 的变量,但是后来你要说的代码是modified而不是String 要么在顶部def中更改modified,要么更改String to modified,然后它会有效地工作