Python3比较运算符,字母匹配一封信

时间:2015-12-09 21:46:33

标签: python regex python-3.x

好的,基本上这就是我所知道的,并且它确实有效,使用Python3:

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

我需要的是当我调用任何位置时(在比较中输入任何单个字符的Lower或Upper大小写),在括号“color []”中进行比较,并将其与仅与“大写或大写字母”匹配“排除所有数字和字符(。*& ^%$#@!)。 按顺序说出以下效果:

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

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

首先,我不想确保它可以做到,我想要完成什么? 第二,如果确实可以做到,那么完成“没有”导入除“sys”之外的任何其他内容。

如果实现这一目标的唯一方法是通过导入其他内容,那么我将查看该建议,但是如果可能的话我不想导入任何内容。

我搜索了我的书,以及本网站上的其他一些问题,我似乎无法找到任何匹配的内容,谢谢。

3 个答案:

答案 0 :(得分:3)

对于寻找字母的情况,可以进行简单的.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,但{ {1}}测试已经过充分优化,在str有意义之前您需要相当长的str;可能大于frozenset中的那个:

example

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

CHARSET = frozenset('13579adgjlqetuozcbm')

if color[5] in CHARSET:

答案 1 :(得分:2)

这是isalpha()有用的地方。

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

如果您需要数字,还有isnumeric()

答案 2 :(得分:0)

不确定为什么你不需要从标准库中导入任何东西。

import string

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