嗨,有没有人知道如何创建一个函数,用一个给定单词中的字符替换字符串中的每个字母字符(无限重复)。如果一个字符不是字母,它应该保持原样。这也必须在不导入任何内容的情况下完成。
def replace_string(string,word)
'''
>>>replace_string('my name is','abc')
'ab cabc ab'
到目前为止,我提出了:
def replace_string(string,word):
new=''
for i in string:
if i.isalpha():
new=new+word
else: new=new+i
print(new)
但是,这个函数只打印'abcabc abcabcabcabc abcabc'而不是'ab cabc ab'
答案 0 :(得分:1)
更改如下:
def replace(string, word):
new, pos = '', 0
for c in string:
if c.isalpha():
new += word[pos%len(word)] # rotate through replacement string
pos += 1 # increment position in current word
else:
new += c
pos = 0 # reset position in current word
return new
>>> replace('my name is greg', 'hi')
'hi hihi hi hihi'
答案 1 :(得分:0)
如果你不能使用itertools
module,首先要创建一个生成器函数,它将无限期地循环替换你的单词:
def cycle(string):
while True:
for c in string:
yield c
然后,稍微调整您现有的功能:
def replace_string(string,word):
new=''
repl = cycle(word)
for i in string:
if i.isalpha():
new = new + next(repl)
else:
new = new+i
return new
输出:
>>> replace_string("Hello, I'm Greg, are you ok?", "hi")
"hihih, i'h ihih, ihi hih ih?"
另一种写这种方式(但我认为第一个版本更具可读性,因此更好):
def replace_string(string,word):
return ''.join(next(cycle(word)) if c.isalpha() else c for c in string)