这主要是一个逻辑问题。我试图在不使用replace函数的情况下替换字符串中的字符。我试图首先将其更改为列表,更改元素,然后将其转换回字符串。我的出席了:
def changeCar(ch,ca1,ca2):
a=list(ch)
for x in a:
if x==ca1:
x==ca2
return a
然而,这不起作用。此外,我不知道如何将其转换回字符串。请帮忙吗?
答案 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 == b
是Comparison Expression。 a = b
是Assignment 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”