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'
答案 0 :(得分:4)
Python 2.6不支持str.casefold()
方法。
来自str.casefold()
documentation:
版本3.3中的新功能。
您需要切换到Python 3.3或以上才能使用它。
没有好的替代品,没有自己实现Unicode案例折叠算法。见How do I case fold a string in Python 2?
但是,由于你在这里处理 bytestring (而不是Unicode),你可以使用str.lower()
并完成它。
答案 1 :(得分:1)
在python 2.x中,当您使用casefold()
时会出现错误。
您可以使用lower()
,这些不同但可比较。
Casefolding类似于小写,但更具攻击性,因为它 旨在删除字符串中的所有大小写区别。例如, 德语小写字母'ß'相当于“ss”。因为它是 已经小写,lower()对'ß'没有任何作用; casefold() 将其转换为“ss”。