使用casefold()时,我收到一个错误,因为“AttributeError:'str'对象没有属性'casefold'”

时间:2015-05-19 14:08:09

标签: python python-2.6 case-folding

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 个答案:

答案 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(),这些不同但可比较。

阅读:str.casefold()

  

Casefolding类似于小写,但更具攻击性,因为它   旨在删除字符串中的所有大小写区别。例如,   德语小写字母'ß'相当于“ss”。因为它是   已经小写,lower()对'ß'没有任何作用; casefold()   将其转换为“ss”。