How would I go about checking if a string only contains a certain character?
string_to_check = "aaaaaa"
character = "a"
I have tried
elif " " in cmd:
return print(Fore.RED f"Input cannot be nothing.")
But this applies to strings with the character in it, I would like to apply string with only the character in it...
For example
does_contain_only("a", "aaaaaa") # True
does_contain_only("a", "aaaaba") # False
Although I don't know any commands / functions to do this,
CodePudding user response:
You could check if a string only contains a certain character, like this:
def does_contain_only(char, string):
return all([c == char for c in string])
print(does_contain_only("a", "aaaaa")) # True
print(does_contain_only("a", "aaaba")) # False
CodePudding user response:
One short solution:
set(string_to_check) == {'a'}
# Or, as a function:
def does_contain_only(character, target):
return set(target) == { character }
You don't specify whether checking the empty string should return True or False. It is certainly the case that every character in an empty string is 'a'
. Every character is also 'b'
. These are both the case because there are no characters in the empty string, so "every character is X" is trivially true for any predicate X (even if X cannot be True for any character).
Sometimes that's what you want and sometimes it isn't. My solution above returns False for the empty string, while the possibly more obvious all(ch == character for ch in target)
would return True.