我正在用 Python 撰寫一些代碼,試圖將一個字串全部清理為小寫,沒有特殊字符。
string_salada_russa = ' !! LeTRas PeqUEnAS & GraNdeS'
clean_string = string_salada_russa.lower().strip()
print(clean_string)
i = 0
for c in clean_string:
if(c.isalpha() == False and c != " "):
clean_string = clean_string.replace(c, "").strip()
print(clean_string)
for c in clean_string:
if(i >= 1 and i <= len(clean_string)-1):
if(clean_string[i] == " " and clean_string[i-1] == " " and clean_string[i 1] == " "):
clean_string = clean_string.replace(clean_string[i], "Z")
i = 1
print(clean_string)
預期結果是:
#original string
' !! LeTRas PeqUEnAS & GraNdeS'
#expected
'letras pequenas grandes'
#actual outcome
'letraspequenasgrandes'
我試圖洗掉多余的空格,但沒有成功。我最終洗掉了所有空格。
有人可以幫我弄清楚嗎?我的代碼有什么問題?
uj5u.com熱心網友回復:
怎么用re?
import re
s = ' !! LeTRas PeqUEnAS & GraNdeS'
s = re.sub(r"[^a-zA-Z] ", " ", s.lower()).strip()
print(s) # letras pequenas grandes
這首先將字母轉換為小寫 ( lower),將每一組非字母字符替換為一個空格 ( re.sub),然后洗掉字串 ( strip)周圍的空格。
順便說一句,您的代碼不會輸出'letraspequenasgrandes'. 相反,它輸出'letrasZpequenasZZZZZgrandes'.
uj5u.com熱心網友回復:
你可以逃脫的組合str.lower(),str.split(),str.join()和str.isalpha():
def clean(s):
return ' '.join(x for x in s.lower().split(' ') if x.isalpha())
s = ' !! LeTRas PeqUEnAS & GraNdeS'
print(clean(s))
# letras pequenas grandes
基本上,您首先轉換為較低,然后拆分為' '. 之后,您過濾掉非 alpha 令牌并將它們重新加入。
uj5u.com熱心網友回復:
無需在第一個 for 回圈的每次迭代中剝離字串;但是,除此之外,您可以保留代碼的第一段:
for c in clean_string:
if(c.isalpha() == False and c != " "):
clean_string = clean_string.replace(c, "")
然后拆分您的字串,有效地洗掉所有空格,并將單詞重新連接回單個字串,每個單詞之間有一個空格:
clean_string = " ".join(clean_string.split())
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/343219.html
上一篇:在資料框中更改某些條件時獲取行
