在for循环中使用if ... else返回字符串

Jin*_*ong 1 python for-loop python-3.x

所以在这里我试图将字符串' ABcsad f!,'转换为
string 'abcsadf',所以基本上我正在尝试将空格和非alpha替换为'',但是我的代码根本不起作用...

s = ' ABcsad f!,'

def norm(s):
    b=''
    i=0
    for i in range(0,len(s)+1):
        if (s[i].isalpha() is False) or (s[i].isspace() is False) :
            return b+=''
        else:
            return b+=s[i]
        i = i+1   

print(norm(s))
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我哪里出了问题?

Ark*_*tev 5

尝试这个 :

s = ' ABcsad f!,'
def norm(s):
    return ''.join(i for i in s.lower() if i.isalpha())
print(norm(s))
Run Code Online (Sandbox Code Playgroud)

输出

'abcsadf'
Run Code Online (Sandbox Code Playgroud)

  • `''.join(i在s中代表i,如果i.isalpha())。lower()`效率更高(更少的函数调用)。 (4认同)