【问题标题】:Python3 comparison operator, letter match a letter [duplicate]Python3比较运算符,字母匹配一个字母[重复]
【发布时间】:2016-03-15 08:44:04
【问题描述】:

好吧,这就是我所知道的,而且它确实可以使用 Python3:

color="Red1 and Blue2!"
color[2]=="d"
True

我需要的是,当我将任何位置(在比较中输入任何单个字符的小写或大写)放入括号“color[]”并将其与“小写或大写字母”进行比较时" 不包括所有数字和字符 (.*&^%$#@!)。 换句话说,效果如下:

color="Red1 and Blue2!"
if color[5]==[a-zA-z]:
     doSomething
else:
     doSomethingElse

当然,我刚刚在上面列出的内容不起作用。也许我的语法是错误的,也许它只是不能完成。如果我只在等号的“右侧”使用单个字母,那么一切都很好,但是就像我说的那样,我需要将任何单个字母拉到左侧,以匹配右侧的内容。

首先我不想确保它可以做,我想要完成什么? 第二,如果确实有可能做到这一点,那么“不”导入除“sys”之外的任何东西。

如果完成此操作的唯一方法是导入其他内容,那么我会考虑该建议,但我宁愿尽可能不导入任何内容。

我在这个网站上搜索了我的书和其他所有问题,但我似乎找不到任何匹配的东西,谢谢。

【问题讨论】:

    标签: python regex python-3.x


    【解决方案1】:

    不太确定为什么您不需要从标准库中导入任何内容。

    import string
    
    color="Red1 and Blue2!"
    if color[5] in string.ascii_letters:
       print("do something")
    else:
       print("do something else")
    

    【讨论】:

    • 虽然这对于通用测试一个字母是否是任意字符集的一部分是一个很好的模式(并且string.ascii_letters对于其他目的很有用,比如迭代特定的字母等),并且是必要的如果您只需要 ASCII 字母,.isalpha() 更可预测(所有命中和未命中的运行时间相同),并且还将包括非 ASCII 字母作为“字母”字符,这是您通常想要的。
    • @ShadowRanger 你是对的,但我想在使用正则表达式包或明确列出所有字符时给出一个更简单的答案。我宁愿将string.ascii_letters 添加到您的答案中,以使其更完整。
    • 是的,这不是我的选择,这是给我的要求,涉及不导入任何东西,这些响应有帮助。我还有更多的代码要写。
    【解决方案2】:

    对于找字母的情况,简单的.isalpha()检查:

    if color[5].isalpha():
    

    会起作用的。

    对于不存在特定检查功能的一般情况,您可以使用in检查:

    if color[5] in '13579':  # Checks for existence in some random letter set
    

    如果“随机字母集”足够大,您可能需要预先转换为 frozenset 以进行检查(frozenset 成员资格测试大致为 O(1),而 O(n) 用于 str,但 @ 987654334@ 测试已经足够优化,您需要相当长的str 才能使frozenset 有意义;可能比example 中的更大):

    CHARSET = frozenset('13579adgjlqetuozcbm')
    
    if color[5] in CHARSET:
    

    或者,您可以通过use regular expressions 获得您想要获得的character classes

    import re
    
    # Do this once up front to avoid recompiling, then use repeatedly
    islet = re.compile('^[a-zA-Z]$').match  
    ...
    if islet(color[5]):
    

    【讨论】:

      【解决方案3】:

      这就是isalpha() 有帮助的地方。

      color="Red1 and Blue2!"
      if color[5].isalpha():
           doSomething
      else:
           doSomethingElse
      

      还有isnumeric(),如果你需要数字的话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2016-05-03
        • 2014-02-19
        • 2013-06-03
        • 2022-11-04
        • 1970-01-01
        相关资源
        最近更新 更多