Удаление слов начинается с верхнего регистра

Так что я новичок в Python и хочу отфильтровать все слова в тексте, который начинается с заглавной буквы, так что с моим ограниченным знанием Python я сделал это:

def filterupper(text):
    upper = string.ascii_uppercase
    filteredupper = [w for w in text not in startswith(upper)]
return filteredupper

и эта ошибка пришла

 File "<pyshell#58>", line 3, in filterupper
filteredupper = [w for w in text not in startswith(upper)]

NameError: глобальное имя "setswith" не определено

так что я попробовал это:

def filterupper(text):
    upper = string.ascii_uppercase
    filteredupper = [w for w in text not in upper]
return filteredupper 

и эта ошибка пришла:

File "<pyshell#55>", line 3, in filterupper
filteredupper = [w for w in text not in upper]
TypeError: 'in <string>' requires string as left operand, not list

так что любой может сказать мне, как удаление слов начинается с заглавной буквы, и скажите мне, что я сделал не так в этих кодах

благодарю вас

1 ответ

Решение

Попробуйте следующее, используя str.islower() проверить, является ли буква строчной:

def filterupper(text):
    return " ".join([word for word in text.split() if word[0].islower()])

>>> filterupper("My name is Bob And I am Cool")
"name is am"
>>>
Другие вопросы по тегам