我正在为初学者学习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!"
只会说由于感叹号,文字包含不允许的字符。
如何比较文本中每个单词中的每个字母是否与字符匹配?
感谢您的帮助,非常感谢。
答案 0 :(得分:1)
最简单的方法是使用set(word).issubset(alphabet)
检查单词中的字符集是否是字母表的子集。例如:
alpha_set = set("best")
print set("test").issubset(alpha_set)
print set("testa").issubset(alpha_set)
打印:
True
False
答案 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