RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1112897
Accepted
MAXIM045
MAXIM045
Asked:2020-04-20 17:28:43 +0000 UTC2020-04-20 17:28:43 +0000 UTC 2020-04-20 17:28:43 +0000 UTC

如何根据字符串中是否存在给定的一组无关字符对字符串进行分类?

  • 772

我有一个接受字符串的函数。

传递给函数的字符串可以:

  1. 完全由字母组成(俄语或英语);
  2. 完全由数字、标点符号和其他符号(№、@、~、#)组成;
  3. 由字母、数字、标点符号和其他符号组成。

我需要检查字符串上方列表中的哪个项目可以归因于。

我可以创建所有字符的列表并像这样组织检查:

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 # Какие-то символы
python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    MaxU - stop genocide of UA
    2020-04-20T18:15:57Z2020-04-20T18:15:57Z

    您可以使用正则表达式:

    import re
    
    vocab = {
        1: "Буквы",
        2: "Какие-то символы",
        3: "Буквы + какие-то символы"
    }
    
    def str_category(str_, vocab=vocab):
        # unicode_letters_pat = r"[^\W\d_]+$"
        if re.match(r"[\sa-zа-яё]+$", str_, flags=re.I):
            # only letters, space or tab
            return vocab.get(1)
        if re.search(r"[a-zа-яё]", str_, flags=re.I):
            # contains at least one letter
            return vocab.get(3)
        # the rest
        return vocab.get(2)
    

    测试:

    In [147]: str_category("english words")
    Out[147]: 'Буквы'
    
    In [148]: str_category("english words и русские слова")
    Out[148]: 'Буквы'
    
    In [149]: str_category("english words & русские слова")
    Out[149]: 'Буквы + какие-то символы'
    
    In [150]: str_category("3.1415")
    Out[150]: 'Какие-то символы'
    
    In [151]: str_category("3.1415 - Pi !!!")
    Out[151]: 'Буквы + какие-то символы'
    
    In [152]: str_category("3.1415, -{}[]) !!!")
    Out[152]: 'Какие-то символы'
    
    In [153]: str_category("english words 123")
    Out[153]: 'Буквы + какие-то символы'
    
    • 4

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5