3 回答

TA贡献1801条经验 获得超16个赞
试试这个 :
s = ' ABcsad f!,'
def norm(s):
return ''.join(i for i in s.lower() if i.isalpha())
print(norm(s))
输出:
'abcsadf'

TA贡献1735条经验 获得超5个赞
这是你出错的地方
您将 return 放在 for 循环中。Return 退出整个
norm
函数,而不是让 for 循环完成。它需要搬到外面。len(s) + 1
导致超出范围的错误。它应该只是len(s)
当您要删除空格时,
s[i].isspace()
应检查是否为真。如果你想要所有的小写,你需要
s[i]
做s[i].lower()
您可以使用
b += ...
但不能在其自己的返回语句中使用它。无论如何,这无关紧要,因为您不应该在那里使用 return 。
def norm(s):
b=''
for i in range(0,len(s)):
if (s[i].isalpha() is False) or (s[i].isspace() is True):
b += ""
else:
b += s[i].lower()
i = i+1
return b
s = ' ABcsad f!,'
print(norm(s))

TA贡献1744条经验 获得超4个赞
可能与正则表达式:
import re
mystring = ' ABcsad f!,'
print (re.sub('[^A-Za-z0-9]+', '', mystring)).lower()
输出:
abcsadf
添加回答
举报