如何从列表中删除小写并将其反转

时间:2015-07-31 11:45:14

标签: python list reverse lowercase

目的是试图扭转消息,删除所有以小写字母开头的字符串,最后将所有内容都小写。

这是我的代码:

msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for i in msg:
  if i[0] == i[0].lower:
    del msg[i]
msg = ' '.join(msg)
msg = msg.lower()
print(msg)

这是一个例子

BaSe fOO ThE AttAcK

然后它会变成

attack the base

非常感谢你们!!!!!!!!!所以我回去编辑了我的代码:

new_msg = []
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for word in msg:
  if not word[0].islower():
    new_msg.append(word.lower())
new_msg = ' '.join(new_msg)
print("says:",new_msg)

然后我回去标记它,但它说你不能标点符号!是的,我想我又需要帮助,我该如何摆脱它们呢?

6 个答案:

答案 0 :(得分:2)

new_msg = []
msg = msg.split()
for word in msg: #For every word in the string
    if not word[0].islower(): #if it starts with anything other than lowercase
        new_msg.append(word.lower()) #add to new list
new_msg = ' '.join(new_msg[::-1]) #Reverse order of list and make into string

答案 1 :(得分:2)

这就是为什么你的代码无法工作,至少:

>>> i = 'fOO'

>>> i[0] == i[0].lower     # huh?
False

>>> i[0].lower             # oh!
<built-in method lower of str object at 0x00249F40>

>>> i[0].lower()           # we forgot to *call* it
'f'

>>> i[0] == i[0].lower()   # perfect!
True

您正在将字符串与方法对象进行比较 - 这就是为什么条件永远不会被命中。

如果你修复了这个错误,它仍然无法正常工作;你删除msg['fOO']没有任何意义!尝试使用enumerate()获取索引以及列表中的字符串。

(然后它仍然将无效。你能找出原因吗?)

答案 2 :(得分:1)

这看起来有点吓人,但我会解释一下。

s = "BaSe fOO ThE AttAcK"
print ' '.join(reversed([word.lower() for word in s.split(' ') if not word[0].islower()]))

我在这里做的是将s分割到单个空格' ',然后创建一个不是单个' '的列表。然后我遍历“单词”列表,并且只有当单词的第一个字符(我们通过调用第0个索引获得)不低时,才使用内置的lower方法将每个单词转换为lower。最后,我们使用join方法加入我们创建的列表。

编辑:我忘了撤消列表。

答案 3 :(得分:-1)

" ".join([word.lower() for word in reversed(msg.split()) if not word[0].islower()])

答案 4 :(得分:-1)

string = raw_input().split()                                                     
string2 = []                                                                     
for i in range(len(string)):                                                     
    if not string[i].[0].islower():                  
        string2.insert(0,string[i].lower())                                              
print ' '.join(string2)                                                          

答案 5 :(得分:-1)

我建议您在任何情况下都不要删除list / Dict迭代中的任何元素。 如果你这样做,那就错了。

就像那样:

sMsg="BaSe fOO The AttAck"
lstMsg=sMsg.split(" ")
for i in xrange(len(lstMsg)):
    if lstMsg[i][0].islower():
        del lstMsg[i]