如何去除所有整数和空格的字符串
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())
您可以使用 translate
。 str.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.
我想知道如何去除所有整数和空格的输入。我知道 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())
您可以使用 translate
。 str.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.