#python #string #operations #attributeerror
#python #строка #операции #ошибка атрибута
Вопрос:
Итак, я пытаюсь запустить это, но выдает ошибку, и мне нужна помощь в понимании того, что не так. Я действительно ценю любую помощь, я беру введение MIT opencourseware в программирование:
words="GreatTimes"
words.lowercase
И я получаю эту ошибку:
AttributeError: 'str' object has no attribute 'lowercase'
Проблема в том, что я пытаюсь запустить пример кода из «Как мыслить как специалист по информатике», и он по-прежнему выдает мне ошибку.
def isLower(ch):
return string.find(string.lowercase, ch) != -1
Итак, я не могу понять, в чем заключается синтаксическая ошибка. Просматривая страницу документа Python, там говорится следующее:
строка.в нижнем регистре строка, содержащая все символы, которые считаются строчными буквами. В большинстве систем это строка ‘abcdefghijklmnopqrstuvwxyz’. Конкретное значение зависит от локали и будет обновлено при вызове locale.setlocale().
Мысли?
Редактировать: Ах, извините, я должен быть более ясным. Итак, я пытаюсь написать фрагмент кода, который подскажет мне, является ли символ в строке строчным или нет. мой код — это моя реализация. в то время как пример кода — это то, что я использую, чтобы попытаться проверить, не является ли мой синтаксис неправильным, и это является источником проблемы. Однако код примера также генерирует ошибку. В двух словах, почему этот код не работает? Кажется, что он должен выдавать строку из всех строчных букв, таких как «reatimes» из «GreatTimes» И / или как бы вы использовали string .в нижнем регистре для создания этой программы?
Комментарии:
1. Итак, в чем именно заключается ваш вопрос?
Ответ №1:
Я немного смущен тем, что вы пытаетесь сделать. Это кажется довольно надуманным упражнением.
-
Если вы просто хотите использовать метод экземпляра,
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
Комментарии:
1. Благодарим вас за вашу помощь до сих пор и сожалеем о том, что не были понятны. По сути, я пытаюсь написать фрагмент кода, который сообщит мне, является ли символ в строке строчным или нет, используя string. в нижнем регистре. Но импорт строки в верхней части программы по-прежнему выдает мне ту же ошибку.
2. хорошо, итак, я действительно попробовал вашу программу, и изначально было много проблем. Я использовал python 3.2, оооочень я решил попробовать python 2.7. И это сработало! Так что, по крайней мере, теперь мне есть на что посмотреть и с чем поиграть. * мгновение спустя, АХ! Теперь все работает в 2.7. До того, как я запустил string. нижний регистр и указанная строка не были определены даже при использовании import string. Теперь я вижу эту строку. нижний регистр подобен кортежу со всеми строчными словами. Таким образом, я могу использовать его для сравнения моего письма со списком и посмотреть, есть ли совпадение! Большое вам спасибо. Как только я смогу проголосовать за… с 15 повторениями.
Ответ №2:
нижний регистр — это имя строки в модуле string:
импортируйте строку string.в нижнем регистре ‘abcdefghijklmnopqrstuvwxyz’
но вы не можете получить к нему доступ через экземпляр string:
word = ‘это строковое’ слово.обратная трассировка в нижнем регистре (последний последний вызов): файл «», строка 1, в AttributeError: объект ‘str’ не имеет атрибута ‘lowercase’
Кроме того, метод find не делает того, что вы думаете — проверьте документы.
Allen
Ответ №3:
Попробуйте использовать «ascii.lowercase», это работает