如何检查字符串是否包含python中所有字母的字母?

时间:2016-04-05 12:54:28

标签: python string pangram

我正在尝试编写一个python程序来检查给定的字符串是否为pangram - 包含字母表中的所有字母。

因此,"We promptly judged antique ivory buckles for the next prize"应返回True,而任何不包含字母表中每个字母的字符串至少应返回False

我相信我应该使用RegEx这个,但我不确定如何。它看起来应该类似于:

import sys
import re

input_string_array = sys.stdin.readlines()
input_string = input_string_array[0]

if (re.search('string contains every letter of the alphabet',input_string):
    return True
else:
    return False

6 个答案:

答案 0 :(得分:12)

这不是我用正则表达式解决的问题,不是。创建一组小写字符串,并检查它是否是字母表字母的超集:

import string

alphabet = set(string.ascii_lowercase)

def ispangram(input_string):
    return set(input_string.lower()) >= alphabet

只有当字母表中的每个字母都在从输入文本创建的集合中时才会成为超集;通过使用超集而不是相等,除了(ASCII)字母外,还允许使用标点符号,数字和空格。

演示:

>>> import string
>>> alphabet = set(string.ascii_lowercase)
>>> input_string = 'We promptly judged antique ivory buckles for the next prize'
>>> set(input_string.lower()) >= alphabet
True
>>> set(input_string[:15].lower()) >= alphabet
False

答案 1 :(得分:0)

你不需要正则表达式。您想要的是两行,空间效率很高。

ms = itertools.chain(range(ord("a"),ord("z")),range(ord("A"),ord("Z")))
flag = all(chr(o) in string for o in ms)

就是这样。 string是您要检查的字符串。 flag可以是TrueFalse,具体取决于所有字符是否都在string

答案 2 :(得分:0)

pangram是一个至少包含字母表中每个字母的函数。 我试过这样的方式:

def pangram():
n = str(input('give me a word to check if it is a pangram:\n'))
n = n.lower()
n = n.replace(' ','')
if not isinstance(n, str):
    return n, False
elif set(n) >= set('abcdefghijklmnopqrstuvxywz'):
    return n, True
else: 
    return n, False

函数isinstance(n,str)检查n是否为字符串。函数set()为我们提供了一个集合。例如,set('penny')返回{'y','e','p','n'} ......如你所见,它是一个没有重复字母的集合。

答案 3 :(得分:0)

我今天也在做同样的练习,也许这不是最好的方法,但我认为这很容易理解。

df['emaillower'] = df['email'].astype(np.str).str.upper()

答案 4 :(得分:0)

import string

def ispangram(str1, alphabet=string.ascii_lowercase):
    return ''.join(sorted(set(str1.lower().replace(" ","")))) == alphabet

首先将所有字母更改为小写,然后使用replace删除所有空格。然后转换为具有唯一字符的set,然后使用sorted函数按字母顺序进行排序。由于排序函数提供了一个列表,因此请加入func将其加入而不带空格,然后将其与所有小写字符进行比较。

答案 5 :(得分:0)

这是我在python中的解决方案:

alphabet = "abcdefghijklmnopqrstuvwxyz"
sentence = input()
sentence = sentence.lower()
missing = ''
for letter in alphabet:
  if letter not in sentence:
    missing = missing+letter
if (len(missing) != 0):
  print("missing", missing)
else:
  print("pangram")