Базовый вопрос Python по строковым операциям: пример: строка.нижний регистр

#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», это работает