检查文本数字,字母,字母大写和小写除了符号

时间:2018-03-19 08:22:16

标签: python python-2.7 computer-science

我需要你的帮助。 我无法理解使用列表或集合的内容。列表更有效。字典也需要索引。但我的问题是文本应该是字符串所以变量必须等于文本作为字符串。我不能D = [' a',' b'' c']。 文本给我错误,因为除了个人之外它不能比较它们,我必须创建诸如abc或word示例作为_success并确认它在列表中是真的。

这是我的代码到目前为止,但我有问题,现在它接受数字,字母和符号。诸如!@#$%之类的符号应该返回False。 将它作为自己的功能工作,但我需要在if语句中。 return text.isalnum()不在if语句中工作。多数民众赞成我的问题符号应该是假的。

  <div class="panel-group" id="accordion1">
          <div class="panel panel-default">
            <div class="panel-heading">
              <h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion1" **data-target**="#collapseOne">
              Collapsible Group #1
              </a></h4>
            </div>
            <div id="collapseOne" class="panel-collapse collapse">
              <div class="panel-body">
                This is a simple accordion inner content...
              </div>
            </div>
          </div>
        </div>

输出问题。 输入文字:_ 假

_假设是符号True之一。示例_success123为True !@#$%假设是假的,但它显示为True作为输出另一个例子是!@#A123。此输出为False。

那里的代码确实接受下划线,字母和数字 输出: _success123 但问题也是接受!@#$为True。  return text.isalnum()拒绝符号,但它在if语句中不起作用。

2 个答案:

答案 0 :(得分:0)

这是一种矫枉过正,但您可以使用正则表达式。添加新字符(例如符号)很容易:

import re
def check(text):
    return re.match('^[a-zA-Z0-9_!]*$', text)

text = str(raw_input("Enter text: "))
print(check(text))

答案 1 :(得分:0)

如果要避免使用正则表达式,可以使用Python集:

allowed = set('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789')

def check(text):
    return not len(set(text) - allowed)

for text in ['_success123', '!@#$%']:
    print(text, check(text))

这会将您的文本转换为一组字符,并删除所有允许的字符。如果剩下任何字符,则表示它无效。对于两个例子,这给出了:

_success123 True
!@#$% False