[英]remove-uppercase-lowercase-special-numeric-and-non-numeric-characters-from-a-string
我正在嘗試解決這個編碼問題,但我的解決方案沒有打印預期的結果 https://www.geeksforgeeks.org/remove-uppercase-lowercase-special-numeric-and-non-numeric-characters-from-a-字符串/?ref=rp
我正在嘗試在沒有“正則表達式”的情況下解決此問題,如頁面所示
str = 'GFGgfg123$%'
def remover(input):
all_lower = []
all_upper = []
all_special = []
all_numeric = []
all_non_numeric = []
for i in input:
# print(i)
if i.islower() or not i.isupper():
all_lower.append(i)
elif not i.islower():
all_upper.append(i)
elif not i.isalpha():
all_special.append(i)
elif not i.isnumeric():
all_numeric.append(i)
elif i.isnumeric():
all_non_numeric.append(i)
print("After removing uppercase characters:", ''.join(all_lower))
print("After removing lowercase characters:", ''.join(all_upper))
print("After removing allspecial characters:", ''.join(all_special))
print("After removing allnumeric characters:", ''.join(all_numeric))
print("After removing allnonnumeric characters:", ''.join(all_numeric))
remover(str)
我得到了什么
After removing uppercase characters: gfg123$%
After removing lowercase characters: GFG
After removing allspecial characters:
After removing allnumeric characters:
After removing allnonnumeric characters:
為什么會這樣? 我搜索了 islpha https://www.w3schools.com/python/ref_string_isalpha.asp如果所有字符都是字母 (az),isalpha() 方法返回 True。
非字母字符示例:(空格)?#%&。 等等
isumeric 也不起作用,因為 python 認為它們是字符串? 我想。 最后我會應用時間和空間復雜度為什么時間復雜度 O(N) 和空間 O(1) 來解決這個問題? https://www.w3schools.com/python/ref_string_isnumeric.asp
在您的代碼片段中,您使用的是elif
而不是if
,因此input
中的字符最多將在您定義的一個列表中 go ,基於給定字符將匹配的第一個if
/ elif
條件。 因此,這種方法不適用於您的情況,因為所需的集合不是不相交的集合,並且相同的字符將成為多個所需列表的一部分。
我還建議更改您的列表名稱,因為它們具有誤導性。 例如,您的代碼中all_lower
的內容將是非小寫字符。
要刪除非特殊字符,您可以使用isalnum()
,它與alphanumerical
字符匹配。
在 python2 中, isnumeric()
方法僅適用於 unicode 字符串,而在 python3 中它適用於字符串。 有關此行為的更多詳細信息 - 為什么 isumeric 不起作用?
這是更新的 python3 代碼 -
str = 'GFGgfg123$%'
def remover(input):
non_lower = []
non_upper = []
non_special = []
non_numeric = []
numeric = []
for i in input:
# print(i)
if i.islower() or not i.isupper():
non_lower.append(i)
if not i.islower():
non_upper.append(i)
if i.isalnum():
non_special.append(i)
if not i.isnumeric():
non_numeric.append(i)
if i.isnumeric():
numeric.append(i)
print("Original string: ", input)
print("After removing uppercase characters:", ''.join(non_lower))
print("After removing lowercase characters:", ''.join(non_upper))
print("After removing all special characters:", ''.join(non_special))
print("After removing all numeric characters:", ''.join(non_numeric))
print("After removing all non-numeric characters:", ''.join(numeric))
remover(str)
這打印 -
Original string: GFGgfg123$%
After removing uppercase characters: gfg123$%
After removing lowercase characters: GFG123$%
After removing all special characters: GFGgfg123
After removing all numeric characters: GFGgfg$%
After removing all non-numeric characters: 123
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.