我正在创建一个遍历文件的函数,并为包含某些字符的字符串创建字典。我不确定如何查看字符串是否至少包含我们要查找的特定字符中的三个。如果一个字符串包含字符a,b,c或d,并包含3个字符,则将其添加到字典中。但是,字符串可以按任意顺序包含它们,这就是我正在努力解决的问题,找到每个包含3个任意顺序的字符串的字符串。
任何帮助将不胜感激。
答案 0 :(得分:1)
我确信有很多方法。这是一个使用集合的内置类型。这没有考虑字母频率。对于频率,可以使用collections.Counter
abcd = "abcd"
set_abcd = set(abcd)
test_string1 = "String with abcd"
test_string2 = "String without"
for s in [test_string1, test_string2]:
if len(set(s).intersection(set_abcd))>3:
print(s, "contains any three of", set_abcd)
else:
print(s, "does not contain any three of", set_abcd)
答案 1 :(得分:0)
您可以为此使用set
,这是一种可能的实现方式:
>>> target_chars = {"a", "b", "c"}
>>> input_string = "z e r i t c b"
>>> input_chars = set(input_string)
>>> len(target_chars - input_chars) == 0
False
>>> target_chars - input_chars
{'a'}
如果输入字符串包含所有目标字符,则 len(target_chars - input_chars)
为true。
答案 2 :(得分:0)
使用for循环的解决方案:
characters = ['a', 'b', 'c', 'd']
for line in lines:
count = 0
for character in characters:
count += 1 if character in line else 0
if (count >= 3):
# do something here
用于增加字符在字符串中出现的次数:
count += line.count(character)