有人问过类似的问题,但这里的所有帖子都指的是替换单个字符。我正在尝试替换字符串中的整个单词。我已经取代了它,但我不能用它们之间的空格打印它。
以下是替换它的函数replace
:
def replace(a, b, c):
new = b.split()
result = ''
for x in new:
if x == a:
x = c
result +=x
print(' '.join(result))
用以下方式调用:
replace('dogs', 'I like dogs', 'kelvin')
我的结果是:
i l i k e k e l v i n
我正在寻找的是:
I like kelvin
答案 0 :(得分:1)
此处的问题是result
是一个字符串,当join
被调用时,它会占用result
中的每个字符并将其加入空格。
相反,使用list
,append
(它比在字符串上使用+=
更快)并通过解压缩打印出来。
那是:
def replace(a, b, c):
new = b.split(' ')
result = []
for x in new:
if x == a:
x = c
result.append(x)
print(*result)
print(*result)
将提供result
列表的元素作为print的位置参数,并以默认的空格分隔打印出来。
"I like dogs".replace("dogs", "kelvin")
当然可以在这里使用,但我很确定这会失败。
答案 1 :(得分:0)
只需将result
列入清单,加入即可:
result = []
您只是生成一个长字符串并加入其字符。
答案 2 :(得分:0)
子串和空间保留方法:
def replace(a, b, c):
# Find all indices where 'a' exists
xs = []
x = b.find(a)
while x != -1:
xs.append(x)
x = b.find(a, x+len(a))
# Use slice assignment (starting from the last index)
result = list(b)
for i in reversed(xs):
result[i:i+len(a)] = c
return ''.join(result)
>>> replace('dogs', 'I like dogs dogsdogs and hotdogs', 'kelvin')
'I like kelvin kelvinkelvin and hotkelvin'