我已經能夠從用戶輸入的字串中分離出我想要排除的字串列(或字串)。但我不知道如何洗掉所有這些不需要的字符。在我這樣做之后,我想我可以嘗試加入用戶字串,這樣它就變成了一個字母輸入,就像說明所說的那樣。
指示:
洗掉所有非字母字符 撰寫一個程式,從給定的輸入中洗掉所有非字母字符。
例如,如果輸入是:
-Hello, 1 world$!
輸出應該是:
Helloworld
我的代碼:
userEntered = input()
makeList = userEntered.split()
def split(userEntered):
return list(userEntered)
if userEntered.isalnum() == False:
for i in userEntered:
if i.isalpha() == False:
#answer = userEntered[slice(userEntered.index(i))]
reference = split(userEntered)
excludeThis = i
print(excludeThis)
當我列印excludeThis時,我得到這個作為我的輸出:
-
,
1
$
!
所以我想我可能走在正確的軌道上。我需要弄清楚如何從用戶輸入中獲取這些字符。任何幫助表示贊賞。
uj5u.com熱心網友回復:
回圈輸入字串。如果字符是字母,則將其添加到結果字串中。
userEntered = input()
result = ''
for char in userEntered:
if char.isalpha():
result = char
print(result)
這也可以使用正則運算式來完成:
import re
userEntered = input()
result = re.sub(r'[^a-z]', '', userEntered, flags=re.I)
正則運算式[^a-z]匹配除字母字符之外的任何內容。該re.I標志使其不區分大小寫。這些都被一個空字串替換,這將洗掉它們。
uj5u.com熱心網友回復:
這基本上有兩個主要部分:區分 alpha 和非 alpha,并獲得一個只有前者的字串。如果isalpha()對前者滿意,那就留下后者。我的理解是,被認為最 Pythonic 的解決方案是加入理解。這會是這樣的:
''.join(char for char in userEntered if char.isalpha())
順便說一句,代碼中有幾個地方比它需要的更復雜。在 Python 中,您可以遍歷字串,因此無需轉換userEntered為串列。isalnum()檢查字串是否全是字母數字,所以它相當不相關(字母數字包括數字)。您永遠不應該將布林值與Trueor進行比較False,只需使用布林值。因此,例如,if i.isalpha() == False:可以簡化為if not i.isalpha():.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457678.html
