如何在Python中组织小写和大写单词?

时间:2013-10-04 22:52:33

标签: python sorting case words

这是我的代码。

我需要做的就是确保列表的组织首先是大写单词,然后是小写单词。我环顾四周,但.sort.sorted命令没有运气。

string = input("Please type in a string? ")

words = string.strip().split()
for word in words:
    print(word)

2 个答案:

答案 0 :(得分:1)

string = raw_input("Please type in a string? ")
words = string.strip().split()
words.sort()

关于如何将大写和小写单词分成不同的列:

string = raw_input("Please type in a string? ")
words = string.split()
column1 = []
column2 = []
for word in words:
    if word.islower():
        column1.append(word)
    else
        column2.append(word)

如果所有字母都是小写,则.islower()函数的计算结果为true。如果这对你的问题的大小写定义不起作用,请查看.isupper()和.istitle()方法here

答案 1 :(得分:1)

sorted()函数应按字母顺序对项目进行排序,并考虑上限。

>>> string = "Don't touch that, Zaphod Beeblebox!"
>>> words = string.split()
>>> print( sorted(words) )
['Beeblebox!', "Don't", 'Zaphod', 'that,', 'touch']

但是如果由于某些原因sorted()忽略了上限,那么如果你愿意,可以手动使用一种列表理解:

words = sorted([i for i in words if i[0].isupper()]) + sorted([i for i in words if i[0].islower()])

这会创建两个单独的列表,第一个列出大写单词而第二个列表没有,然后单独排序并将它们连接起来以得到相同的结果。

但最后你绝对应该使用sorted();它更加高效和简洁。


编辑:抱歉,我可能错过了解释您的问题;如果你想组织 Caps 而不是而不按字母顺序排序,那么这可行:

>>> string = "ONE TWO one THREE two three FOUR"
>>> words = string.split()
>>> l = []
>>> print [i for i in [i if i[0].isupper() else l.append(i) for i in words] if i!=None]+l
['ONE', 'TWO', 'THREE', 'FOUR', 'one', 'two', 'three']

我找不到比那更有效的方法,所以你去。