簡體   English   中英

從字符串中刪除大寫小寫特殊數字和非數字字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM