在字符串中查找唯一字母

时间:2019-01-13 02:11:22

标签: python-3.x

我正在尝试找出如何在字符串中查找大量唯一字母。

我知道如何使用下面的代码查找字符串中唯一字符的数量。

但是,如果我想查找字符串中不包含标点符号的唯一字母而不是字符的数量,该怎么办?

    import string
    s = 'AabC'
    s = s.lower()
    print(sum(1 for c in string.ascii_lowercase if s.count(c) == 1))

2 个答案:

答案 0 :(得分:1)

首先,您可以过滤掉所有非字母字符,然后将其转换为set并检查其长度。

s = 'AabC123qwer!!>>??'
unique = set(filter(str.isalpha, s.lower()))

print(len(unique))

7

答案 1 :(得分:0)

这是无需将字母转换为小写字母的一种方法。

import re
from collections import Counter

input_string = 'Aabb.CCC*ZZZ'
find_letters = re.findall(r'[A-Za-z]',input_string)
all_letters =  "".join(find_letters)
letter_frequency = Counter(all_letters).most_common()
print (letter_frequency)

# OUTPUT
[('C', 3), ('Z', 3), ('b', 2), ('A', 1), ('a', 1)]

此方法将字母转换为小写字母。

import re
from collections import Counter

input_string = 'Aabb.CCC*ZZZ'
find_letters = re.findall(r'[A-Za-z]',input_string.lower())
all_letters =  "".join(find_letters)
letter_frequency = Counter(all_letters).most_common()
print (letter_frequency)

# OUTPUT
[('c', 3), ('z', 3), ('a', 2), ('b', 2)]