例如,如果字符串全部小写,我想返回True,并且只包含字母字符(数学运算符除外)。
例如:
'x'
为True,'X'
为False,'x+y'
为True # here's where it doesn't work
。
我目前的情况是:
if not str.islower() or not str.isalpha():
return False
当我x+y
时,它全是lower
,但字符串不是alpha
。我想以某种方式ignore
标准数学运算符+, -, *
,因为 数学表达式。这可能没有太多代码吗?
答案 0 :(得分:0)
您可以使用正则表达式:
import re
return bool(re.fullmatch(r'[a-z*/+-]+', 'x+y'))
答案 1 :(得分:0)
您可以使用正则表达式并将代码转换为:
import re
p = re.compile('^[a-z+*/-]+$')
return p.match(str)
答案 2 :(得分:0)
[...]如果字符串全部为小写,我想返回True,并且只包含字母字符(数学运算符除外)。
在我看来,最简单的解决方案就是制作自己的功能:
def is_valid_string(string, operators):
string = ''.join([c for c in string if c not in operators])
return all(c.isalpha() and c.lower() for c in string)
它可以像这样使用:
if is_valid_string(str):
# code
通过这种方式,您可以轻松自定义哪些运算符被忽略,哪些运算符不被忽略。
答案 3 :(得分:0)
import string
comp = string.ascii_lowercase + "+-/*"
然后你的有效替代是:
if not all([False for char in str if char not in comp]):
return False
为每个字符集使用一个集合in
,并且仅构建故障列表(快速匹配)。
作为一项功能:
def valid(string):
comp = string.ascii_lowercase + "+-/*"
return all([False for char in str if char not in comp])