如何在Python3中按小写、大写和混合大小写字符串从控制台拆分列表

如何在Python3中按小写、大写和混合大小写字符串从控制台拆分列表,python,Python,这是我的代码,但不起作用。它应该从控制台读取文本,将其拆分为单词,并将它们分为3个列表,并在它们之间使用分隔符 words = list(map(str, input().split(" "))) lowercase_words = [] uppercase_words = [] mixedcase_words = [] def split_symbols(list): from operator import methodcaller list = words

这是我的代码,但不起作用。它应该从控制台读取文本,将其拆分为单词,并将它们分为3个列表,并在它们之间使用分隔符

words = list(map(str, input().split(" ")))    

lowercase_words = []
uppercase_words = []
mixedcase_words = []

def split_symbols(list):
    from operator import methodcaller
    list = words
    map(methodcaller(str,"split"," ",",",":",";",".","!","( )","","'","\\","/","[ ]","space"))
    return list

for word in words:
    if words[word] == word.lower():
        words[word] = lowercase_words
    elif words[word] == word.upper():
        words[word] = uppercase_words
    else:
        words[word] = mixedcase_words
print(f"Lower case: {split_symbols(lowercase_words)}")
print(f"Upper case: {split_symbols(uppercase_words)}")
print(f"Mixed case: {split_symbols(mixedcase_words)}")

代码中有几个问题

1)
words
是一个列表,
word
是一个字符串。您正试图访问索引为字符串的列表,这将抛出一个错误。必须使用整数为列表编制索引。在这种情况下,您甚至不需要索引

2) 要检查小写或大写,只需执行以下操作:
word==word.lower()
word==word.upper()
。或者另一种方法是使用返回布尔值的
islower()
isupper()
函数

3) 您正试图将空列表分配给该列表元素。您想要的是将单词附加到该特定列表中。您需要类似于
小写字母的单词。追加(单词)
。大写和混合大写相同

所以,要解决这两个问题,可以这样编写代码-

for word in words:
    if word == word.lower():         # same as word.islower()
        lowercase_words.append(word)
    elif word == word.upper():       # same as word.isupper()
        uppercase_words.append(word)
    else:
        mixedcase_words.append(word)
我的建议是不要给变量命名,比如
list
。另外,在
split_words()
中,您正在将
列表
分配给
单词
。我想你不是故意的

现在我不确定问题中的“在它们之间使用分隔符”部分。但是行
映射(methodcaller(str,“split”、“,”、“:”、“;”、“!”、“()”、“,”、“\\”、“/”、“[]”、“space”)
肯定是错误的
map()
接受一个函数和一个iterable。在您的代码中,iterable部分不存在,我认为这是输入参数
列表
适合的地方。所以,可能是这样的-

map(methodcaller("split"," "), list)

但是我还是不知道你用这么多的分隔符想达到什么目的,你的意思是,附加(单词)?此外,
split_symbols
功能看起来也很糟糕。它在这里做什么?我想你也不明白。要将5放入名为“something”的变量中,您应该执行
something=5
。绝对不是
5=某物