Основной вопрос Python по операциям со строками: пример: string.lowercase - PullRequest
2 голосов
/ 20 мая 2011

Итак, я пытаюсь запустить это, но оно выдает ошибку, и мне нужна помощь, чтобы понять, что не так.Я действительно ценю любую помощь, я беру вступление MIT opencourseware в программирование:

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 ().

Мысли?

Редактировать: Ах, извините, мне нужно быть более ясным.Поэтому я пытаюсь написать фрагмент кода, который скажет мне, является ли символ в строке строчными или нет.мой код - это моя реализация.в то время как пример кода это то, что я использую, чтобы попытаться проверить, является ли мой синтаксис неправильным, и это является источником проблемы.Однако пример кода также генерирует ошибку.В двух словах, почему этот код не работает?Похоже, что он должен выплевывать строку из всех строчных букв, таких как "reatimes" из "GreatTimes" и / или как бы вы использовали string.lowercase для создания этой программы?

Ответы [ 3 ]

8 голосов
/ 20 мая 2011

Я немного смущен тем, что вы пытаетесь сделать.Это выглядит довольно надуманным упражнением.

  • Если вы просто хотите использовать метод экземпляра, 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
0 голосов
/ 20 апреля 2017

Попробуйте использовать "ascii.lowercase", он работает

0 голосов
/ 21 мая 2011

нижний регистр - это имя строки в строковом модуле:

строка импорта string.lowercase 'АБВГДЕЖЗИКЛМНОПРСТУФХЧШЭЮЯ'

но вы не можете получить к нему доступ через экземпляр строки:

word = 'это строка' word.lowercase Traceback (последний вызов был последним): Файл "", строка 1, в AttributeError: у объекта 'str' нет атрибута 'нижний регистр'

Кроме того, метод find не делает то, что вы думаете - проверьте документы.

Allen

...