检查输入的字符是否与Python中给出的字符匹配

时间:2016-10-08 17:02:47

标签: python acronym

我正在为初学者学习Python课程。 我们必须创建一个代码,将最多6个单词的输入转换为首字母缩略词。

在创建首字母缩略词之前,必须检查单词是否仅包含给定集合中的字符,但我不能只检查它是否是字母表,因为我们使用的是具有特殊字符的本地字母表(õ,ä,ö) ,ü)。

def main():

    nr_of_words_limit = 6
    chars = "abcdefghijklmnopqrstuvwõäöüxyz"

    def not_allowed_characters_check(text, chars):
        """This checks if all words in text only include characters from chars"""

    def acronym(text, chars, nr_of_words_limit): 
        """Creates acronym after checking for not allowed characters"""

所以,在这种情况下:

text = "Hello World!"

只会说由于感叹号,文字包含不允许的字符。

如何比较文本中每个单词中的每个字母是否与字符匹配?

感谢您的帮助,非常感谢。

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用set(word).issubset(alphabet)检查单词中的字符集是否是字母表的子集。例如:

alpha_set = set("best") 
print set("test").issubset(alpha_set)
print set("testa").issubset(alpha_set)

打印:

True
False

Example here

答案 1 :(得分:0)

您可以使用regular expressions检查文本中的每个字词是否与特定模式匹配。您的案例中的模式是单词中的所有字符都应该是字母表中的字母:大写 AZ 以及小写 az (我假设您的示例)和字母õäöü)。

学习如何使用正则表达式对初学者来说似乎令人生畏,但通过一些练习,你会发现它们非常有用和高效。

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

import re

def check_allowed_chars(text):
    """
    """
    pattern = re.compile('[a-zA-Zõäöü]+$')
    words = text.split()
    for word in words:
        if not pattern.match(word):
            print('The text contains not allowed characters!')
            return