use*_*538 6 python string python-2.5
我有一个用户输入的多项式,我只想使用它,如果它只有字符串中的字符1234567890^-+x.
如何在不使用外部包的情况下检查是否存在?我只想使用内置的Python 2.5函数.
我正在编写一个可以在任何Mac上运行而无需外部软件包的程序.
Tim*_*ers 14
这里有一些奇怪的:-)方法:
good = set('1234567890^-+x')
if set(input_string) <= good:
# it's good
else:
# it's bad
Run Code Online (Sandbox Code Playgroud)
要么
if input_string.strip('1234567890^-+x'):
# it's bad!
else:
# it's good
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 10
使用正则表达式:
import re
if re.match('^[-0-9^+x]*$', text):
# Valid input
Run Code Online (Sandbox Code Playgroud)
该re模块附带Python 2.5,是您最快的选择.
演示:
>>> re.match('^[-0-9^+x]*$', '1x2^4-2')
<_sre.SRE_Match object at 0x10f0b6780>
Run Code Online (Sandbox Code Playgroud)
set,因为集合提供更快的查找速度然后你可以使用all这样的函数
valid_chars = set("1234567890^-+x") # Converting to a set
if all(char in valid_chars for char in input_string):
# Do stuff if input is valid
Run Code Online (Sandbox Code Playgroud)我们可以将输入字符串也转换为一个集合,并检查输入字符串中的所有字符是否都在有效列表中。
valid_chars = set("1234567890^-+x") # Converting to a set
if set(input_string).issubset(valid_chars):
# Do stuff if input is valid
Run Code Online (Sandbox Code Playgroud)