如何去除所有整数和空格的字符串

How to strip string of all integers and spaces

我想知道如何去除所有整数和空格的输入。我知道 Python 中的 .strip() 函数可以做到这一点,但它只适用于字符串 beginning/end 处的字符。

这是我的代码:

    battery = input("Is the phone charger turned on at the plug?").lower()
        if battery == "y" or battery == "yes":
            print("Replace the phone's battery or contact the phone's manufacturer.")
            break

因此,如果用户输入 'ye2s',程序将去掉 '2' 并将其作为 'yes'。

您可以使用 isdigit() 字符串方法,如下所示:

battery = ''.join(c for c in battery if not c.isdigit() and not c.isspace())

您可以使用 translatestr.maketrans 的最后一个参数是要删除的字符:

>>> table = str.maketrans("", "", "0123456789 ")
>>> "ye2s with spac3es".translate(table)
'yeswithspaces'

这可能比将字符串作为列表进行操作要快。

处理所有 unicode 十进制字符

J.F.Sebastian 所述,unicode 提供了许多 更多字符被视为十进制数字。

所有数字:

>>> len("".join(c for c in map(chr, range(sys.maxunicode + 1)) if c.isdecimal()))
460

所以要删除所有可能的小数(和 space)字符:

>>> delchars = "".join(c for c in map(chr, range(sys.maxunicode + 1)) if c.isdecimal() or c.isspace())
>>> table = str.maketrans("", "", delchars)
>>> "ye2s with spac3es".translate(table)
'yeswithspaces'

您也可以使用regular expressions来完成这项工作,注意\d表示任何数字\s表示任何space:

>>> import re
>>> input = 'ye255 s'
>>> re.sub('[\d\s]+', '', 'ye255 s')
'yes'

都是好的答案,无论你选择什么方法都没有错。 我的答案是使用 .lower() 这样你的程序就会识别 "Y" "Yes" "YEs""YES"

更改此行:

if battery == "y" or battery == "yes":

到这一行:

if battery.lower() == "y" or battery.lower() == "yes":

或者,如果您只喜欢使用 .lower() 一次,您可以这样做

if battery.lower() in ["y", "yes"]:

HTH.