如何用python用'#'替换字符串中的每个连续字符?
示例 - 对于给定字符串 'Hello World' 返回的字符串是 'H#l#o W#r#d'。
我试过这个代码,但空格也包含在这个中。我希望在单词之间保持空格
def changer():
ch=[]
for i in 'Hello World':
ch.append(i)
for j in range(1,len(ch),2):
ch[j]= '#'
s=''
for k in ch:
s=s+k
print(s)
changer()
Output - H#l#o#W#r#d
Output i want = H#l#o W#r#d
回答
您可以str.split在空格上获取子字符串,然后为每个子字符串替换所有奇数字符,'#'同时保留偶数字符。然后str.join替换的子串重新组合在一起。
>>> ' '.join(''.join('#' if v%2 else j for v,j in enumerate(i)) for i in s.split())
'H#l#o W#r#d'
回答
您可以控制增量,默认情况下为 2,但在空格 1 的情况下跳过它并继续评估下一个单词
def changer():
ch=[]
increment = 2
for i in 'Hello World':
ch.append(i)
for j in range(1,len(ch),increment):
if not ch[j].isspace():
ch[j]= '#'
increment = 2
else:
increment = 1
s=''
for k in ch:
s=s+k
print(s)
changer()