如何用python将字符串中的每个连续字符替换为“#”?

2022-11-11 14:30:41 发布


示例-对于给定字符串“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

Tags: 字符串代码in示例helloforworldoutputdefrangech单词空格appendchanger
3条回答

您可以控制增量,默认情况下为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()

因为您说过不希望在输出中包含空格,所以不要包含空格:

ch=[]
for i in 'Hello World':
    ch.append(i)
for j in range(1,len(ch),2):
    if ch[j] != " ": # don't 'include' spaces
        ch[j]= '#'
s=''
for k in ch:
    s=s+k
print(s)

您可以使用空格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'