Python:在没有replace()函数的情况下替换字符串中的字符

时间:2014-12-13 19:40:37

标签: python string list replace

这主要是一个逻辑问题。我试图在不使用replace函数的情况下替换字符串中的字符。我试图首先将其更改为列表,更改元素,然后将其转换回字符串。我的出席了:

def changeCar(ch,ca1,ca2):

    a=list(ch)
    for x in a:
        if x==ca1:
             x==ca2
    return a

然而,这不起作用。此外,我不知道如何将其转换回字符串。请帮忙吗?

5 个答案:

答案 0 :(得分:1)

您不需要在python中将字符串定义为列表。

string = 'The quick brown fox jusmps over the lazy dog'
# Define your variables
result = ''
for i in string:
        if i == 'o':
                i = '0'
        result += i
print result

但是你必须使用一个清单:

string = list('The quick brown fox jusmps over the lazy dog')
result = []
for i in string:
        if i == 'o':
                i = '0'
        result.append(i)
print ''.join(result)

答案 1 :(得分:1)

你走在正确的轨道上。由于Python字符串是不可变的,因此您无法在适当的位置更改字符,因此将其拆分为字符列表,修改该列表中的元素,然后重新连接它的方法是正确的。您的解决方案无法正常工作,因为x不是列表中元素的引用(或指针),而是它们的副本。因此,x = c2(而不是x == c2,如您的示例所示)仅修改副本。您必须按索引访问列表,如下所示:

for ind in range(len(a)):
    if a[ind] == ca1:
         a[ind] = ca2

return "".join(a)

你也可以使用列表理解来最大限度地简化,虽然可能有点不可读:

return "".join([(char if char != ca1 else ca2) for char in ch])

答案 2 :(得分:1)

不要将字符串更改为列表。那是不必要的。相反,在函数定义中定义一个空字符串,然后相应地附加到它,最后返回该变量的值:

def changeCar(ch,ca1,ca2):
    b = ''
    for x in ch:
        if x!= ca1:
            b+= x
        else:
            b+=ca2
    return b

现在你得到:

>>> changeCar("abc","b","c")
'acc'
>>> 

答案 3 :(得分:0)

a == bComparison Expressiona = bAssignment Statement。要将列表转换为字符串:

>>> ''.join(['a', 'b', 'c', 'd', 'e', 'f', 'g'])
'abcdefg'
>>> 

答案 4 :(得分:0)

对于像这样的简单操作,您可以使用列表推导。 试试这样:

In [1]: text = "Hello, World!"
In [2]: ''.join([ch if ch != 'o' else 'a' for ch in text])
Out[2]: 'Hella, Warld!'

此列表理解将字符“o”替换为“a”