关于字符串操作的基本Python问题:例如:string.lowercase

3 投票
3 回答
18229 浏览
提问于 2025-04-16 18:01

我在尝试运行这个代码,但出现了错误,我需要帮助来理解问题出在哪里。非常感谢任何帮助,我正在参加麻省理工学院的编程入门课程:

words="GreatTimes"
words.lowercase

然后我得到了这个错误:

AttributeError: 'str' object has no attribute 'lowercase'

问题是我在尝试运行《如何像计算机科学家一样思考》中的示例代码,但它仍然给我报错。

def isLower(ch):
    return string.find(string.lowercase, ch) != -1

所以我搞不清楚语法错误是什么。查看Python文档页面,上面说:

string.lowercase 是一个字符串,包含所有被认为是小写字母的字符。在大多数系统中,这个字符串是 'abcdefghijklmnopqrstuvwxyz'。具体的值依赖于地区设置,并会在调用 locale.setlocale() 时更新。

有什么想法吗?

编辑: 啊,抱歉,我应该更清楚一点。我想写一段代码,告诉我字符串中的某个字符是否是小写字母。我的代码是我对这个功能的实现。而示例代码是我用来检查我的语法是否有问题的,结果却也是出错。总之,为什么这段代码不工作?它看起来应该能从 "GreatTimes" 中输出所有的小写字母,比如 "reatimes"。或者我该如何使用 string.lowercase 来实现这个程序呢?

3 个回答

-2

试试用 "ascii.lowercase",这个方法有效。

0

lowercase是字符串模块中的一个字符串名称:

import string string.lowercase 'abcdefghijklmnopqrstuvwxyz'

但是你不能通过字符串实例来访问它:

word = 'this is a string' word.lowercase Traceback (most recent call last): File "", line 1, in AttributeError: 'str' object has no attribute 'lowercase'

另外,find方法的功能可能和你想的不一样——建议查看文档。

Allen

8

我有点搞不清楚你想做什么。这看起来像是一个有点复杂的练习。

  • 如果你只是想用一个实例方法,words.lower() 会返回字符串 words 的小写版本。

  • 如果你想自己实现一个小写函数,使用 string.lowercase(这其实是一个包含所有小写字母的字符串常量),那么你需要在调用之前先做 import string(比如在你的 lower 函数示例中)。

  • 如果你做了 import string,你也可以用 string.lower('STRING with CAPS') 来代替。

补充:这里有一些代码可以运行你的函数,来给你展示它是有效的:

import string

def isLower(ch):
    return string.find(string.lowercase, ch) != -1


words = "GreatTimes"

lowercase_letters = ""
for ch in words:
    print ch, '->', isLower(ch)

    if isLower(ch):
        lowercase_letters += ch

print "Lowercase letters were:", lowercase_letters

输出:

G -> False
r -> True
e -> True
a -> True
t -> True
T -> False
i -> True
m -> True
e -> True
s -> True
Lowercase letters were: reatimes

撰写回答