При использовании casefold() я получаю сообщение об ошибке, так как " AttributeError: у объекта 'str' нет атрибута 'casefold' "
vowels = 'aeiou'
# take input from the user
ip_str = raw_input("Enter a string: ")
# make it suitable for caseless comparisions
ip_str = ip_str.casefold()
# make a dictionary with each vowel a key and value 0
count = {}.fromkeys(vowels,0)
# count the vowels
for char in ip_str:
if char in count:
count[char] += 1
print(count)
Ошибка:
Line - ip_str = ip_str.casefold()
AttributeError: 'str' object has no attribute 'casefold'
2 ответа
Python 2.6 не поддерживает str.casefold()
метод.
От str.casefold()
документация:
Новое в версии 3.3.
Вам нужно будет переключиться на Python 3.3 или выше, чтобы иметь возможность использовать его.
Нет хороших альтернатив, если не считать реализации алгоритма Unicode casefolding самостоятельно. См. Как мне сложить строку в Python 2?
Однако, поскольку здесь вы обрабатываете строку байтов (а не Unicode), вы можете просто использовать str.lower()
и покончим с этим.
В Python 2.x вы получите ошибку при использовании casefold()
,
Вы можете просто использовать lower()
это не то же самое, но сравнимо.
Читать: str.casefold ()
Свертывание регистров похоже на нижний регистр, но более агрессивно, потому что оно предназначено для удаления всех различий регистра в строке. Например, немецкая строчная буква "ß" эквивалентна "ss". Так как это уже строчные буквы, lower() ничего не будет делать с 'ß'; casefold() преобразует его в "ss".