我有一个接受字符串的函数。
传递给函数的字符串可以:
- 完全由字母组成(俄语或英语);
- 完全由数字、标点符号和其他符号(№、@、~、#)组成;
- 由字母、数字、标点符号和其他符号组成。
我需要检查字符串上方列表中的哪个项目可以归因于。
我可以创建所有字符的列表并像这样组织检查:
def string_filter(string:str) -> None:
ban_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'+', '=', '*', '/', '%', '|', '@', '^', '>', '<',
'?', '!', '#', '№', '_', '-', '(', ')', '{', '}',
'$', '`', '~', '"', ';', ':', '[', ']']
letters = True
for i in ban_list:
if i in string:
letters = False
if letters:
print('В строке только буквы')
else:
print('В строке есть другие символы')
string_filter('only letters')
# Результат вызова >>> В строке только буквы
string_filter('123')
# Результат вызова >>> В строке есть другие символы
但实际上,这段代码不起作用,也没有任何意义。
首先,包含一堆字符的列表看起来不太美观。
其次,我可以仅针对第一项检查字符串。说一个字符串绝对不包含字母或由字母和符号组成是行不通的。
请告诉我如何组织字符串检查并确定它属于上面列表中的哪个项目?
升级版:
唯一可以返回的情况是字符串中只有字母:
print(str_category('abc'))
# Результат вызова >>> 1
只有当string中绝对没有字母时,deuce 才能返回,但可以有数字和其他字符:
print(str_category('@1$;%3'))
# Результат вызова >>> 2
只有当字符串同时包含字母并且必须包含一些不是字母的字符(这些可以是数字,可以是符号)时,三元组才能返回:
print(str_category('abc@%4e'))
# Результат вызова >>> 3
UPD2:
In [60]: str_category("english words")
Out[60]: 1 # Буквы
In [61]: str_category("english words и русские слова")
Out[61]: 1 # Буквы
In [62]: str_category("english words & русские слова")
Out[62]: 3 # Буквы + какие-то символы
In [63]: str_category("3.1415")
Out[63]: 2 # Какие-то символы
In [64]: str_category("3.1415 - Pi !!!")
Out[64]: 3 # Буквы + какие-то символы
In [65]: str_category("3.1415, -{}[]) !!!")
Out[65]: 2 # Какие-то символы
您可以使用正则表达式:
测试: