功能辅助

时间:2014-02-19 00:09:53

标签: python

我是python的新手,我正在创建一个与.replace方法相同的函数。

到目前为止,我有这个:

def replace_str (string, substring, replace):
    my_str = ""
    for index in range(len(string)):
        if string[index:index+len(substring)] == substring :
            my_str += replace
        else:
            my_str += string[index]   
    return my_str

测试时:

print (replace_str("hello", "ell", "xx")) 

它返回:

hxxllo

我希望有人可以帮助我指出正确的方向,以便用“xx”替换“ell”,然后跳到“o”并打印:

hxxo

作为.replace字符串方法。

2 个答案:

答案 0 :(得分:0)

通常,使用带有手工维护的索引变量的while是一个坏主意,但是当你需要在循环中操作索引时,它可以是一个好的选择:

def replace_str(string, substring, replace):
    my_str = ""
    index = 0
    while index < len(string):
        if string[index:index+len(substring)] == substring:
            my_str += replace
            # advance index past the end of replaced part
        else:
            my_str += string[index]
            # advance index to the next character
    return my_str

请注意x.replace(y, z)y为空时会有所不同。如果您想匹配该行为,可能需要在代码中使用特殊情况。

答案 1 :(得分:0)

您可以执行以下操作:

import sys

def replace_str(string, substring, replace):
    new_string = ''
    substr_idx = 0

    for character in string:
        if character == substring[substr_idx]:
            substr_idx += 1
        else:
            new_string += character
        if substr_idx == len(substring):
            new_string += replace
            substr_idx = 0
    return new_string

if len(sys.argv) != 4:
    print("Usage: %s [string] [substring] [replace]" % sys.argv[0])
    sys.exit(1)
print(replace_str(sys.argv[1], sys.argv[2], sys.argv[3]))

请注意,在列表上使用str.join()命令(list.append是O(1))比上面的工作更快,但是你说你不能使用字符串方法。

使用示例:

$ python str.py hello ell pa
hpao
$ python str.py helloella ell pa
hpaopaa