3 回答

TA貢獻1801條經(jīng)驗 獲得超16個贊
試試這個 :
s = ' ABcsad f!,'
def norm(s):
return ''.join(i for i in s.lower() if i.isalpha())
print(norm(s))
輸出:
'abcsadf'

TA貢獻1735條經(jīng)驗 獲得超5個贊
這是你出錯的地方
您將 return 放在 for 循環(huán)中。Return 退出整個
norm
函數(shù),而不是讓 for 循環(huán)完成。它需要搬到外面。len(s) + 1
導(dǎo)致超出范圍的錯誤。它應(yīng)該只是len(s)
當(dāng)您要刪除空格時,
s[i].isspace()
應(yīng)檢查是否為真。如果你想要所有的小寫,你需要
s[i]
做s[i].lower()
您可以使用
b += ...
但不能在其自己的返回語句中使用它。無論如何,這無關(guān)緊要,因為您不應(yīng)該在那里使用 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條經(jīng)驗 獲得超4個贊
可能與正則表達式:
import re
mystring = ' ABcsad f!,'
print (re.sub('[^A-Za-z0-9]+', '', mystring)).lower()
輸出:
abcsadf
添加回答
舉報