如何从python中删除字符串中的小写单词

时间:2011-11-30 13:40:14

标签: python list

我是python中的新手,我遇到了一些简单的问题。

我有一个数组(或在python中说的列表),如下所示:

 list = [ 'NICE dog' , 'blue FLOWER' , 'GOOD cat' , 'YELLOW caw']

如您所见,此数组的每个元素都包含一些单词。这些单词都是小写和大写。

如何从这个数组中删除每个小写单词?

例如,我想将此列表作为结果:

list = [ 'NICE' , 'FLOWER' , 'GOOD' , 'YELLOW']

6 个答案:

答案 0 :(得分:9)

l = [ 'NICE dog' , 'blue FLOWER' , 'GOOD cat' , 'YELLOW caw']

output = [' '.join(w for w in a.split() if w.isupper())  for a in l]
# or:    
output = [' '.join(filter(str.isupper, a.split())) for a in l]

返回:

['NICE', 'FLOWER', 'GOOD', 'YELLOW']

(不要使用list作为变量名。)

答案 1 :(得分:3)

以下将会这样做:

def remove_lower(s):
    return ' '.join(w for w in s.split(' ') if not w.islower())

l = [ 'NICE dog' , 'blue FLOWER' , 'GOOD cat' , 'YELLOW caw']

l = map(remove_lower, l)

答案 2 :(得分:2)

string.translate()会快速删除指定的字符:

>>> import string
>>> mylist=['NICE dog', 'blue FLOWER', 'GOOD cat', 'YELLOW caw']
>>> print [s.translate(None, string.ascii_lowercase) for s in mylist]
['NICE', 'FLOWER', 'GOOD', 'YELLOW']

答案 3 :(得分:1)

这是使用re(正则表达式)模块执行此操作的方法:

list = map(lambda l: re.sub(r'\b\w*[a-z]+\w*\b','',l).strip(), list)

答案 4 :(得分:0)

list = [ 'NICE dog' , 'blue FLOWER' , 'GOOD cat' , 'YELLOW caw']

print [word for pair in list for word in pair.split() if not word.islower()]

答案 5 :(得分:0)

lst = [ 'NICE dog' , 'blue FLOWER' , 'GOOD cat' , 'YELLOW caw']

for i in range(len(lst)):
    tmp = ""
    for j in range(len(lst[i])):
        if ord(lst[i][j]) <= ord('Z'):
            tmp = tmp + lst[i][j]
    lst[i] = tmp.strip()
print(lst) #['NICE', 'FLOWER', 'GOOD', 'YELLOW']