如何在Python3中按小写、大写和混合大小写字符串从控制台拆分列表
这是我的代码,但不起作用。它应该从控制台读取文本,将其拆分为单词,并将它们分为3个列表,并在它们之间使用分隔符如何在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
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=某物