关于字符串操作的基本Python问题:例如:string.lowercase
我在尝试运行这个代码,但出现了错误,我需要帮助来理解问题出在哪里。非常感谢任何帮助,我正在参加麻省理工学院的编程入门课程:
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 个回答
试试用 "ascii.lowercase",这个方法有效。
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
我有点搞不清楚你想做什么。这看起来像是一个有点复杂的练习。
如果你只是想用一个实例方法,
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