python - 如何在python 3中通过小写,大写和混合大小写字符串从控制台拆分列表
问题描述
这是我的代码,但它不起作用。它应该从控制台读取文本,将其拆分为单词并将它们分配到 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)您正在尝试为该列表元素分配一个空列表。您想要的是将单词附加到该特定列表中。你想要类似的东西lowercase_words.append(word)
。大写和混合大小写相同
因此,要解决这两个问题,您可以编写如下代码 -
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()
您分配list
给words
. 我想你的意思是相反的。
现在我不确定问题的“在它们之间使用分隔符”部分。但这条线map(methodcaller(str,"split"," ",",",":",";",".","!","( )","","'","\\","/","[ ]","space"))
肯定是错误的。map()
接受一个函数和一个可迭代的。在您的代码中,不存在可迭代部分,我认为这是输入参数list
适合的地方。所以,它可能类似于 -
map(methodcaller("split"," "), list)
但是话又说回来,我不确定你想用那么多分隔符来实现什么
推荐阅读
- c# - 为什么 ToolStrip 控件 (Segoe UI 16) 和所有其他控件 (Microsoft Sans Serif 13) 有不同的字体?
- typescript - 在 tupescript mixin 错误中访问 vue 组件 getter (TS2339)
- javascript - 获得最大高度,用户在网页内移动
- swift - 如何在委托协议模式中使用相同的实例?
- javascript - Vue:计算属性未传递给子组件(控制台记录“空字符串”)
- c++ - 如何在对对象使用右值时适当地调用复制构造函数?
- apache-kafka - 从 kafka 读取时删除重复消息
- android - 等待数周激活后,AdMob 广告适用于测试广告,但不适用于用户广告
- postgresql - postgres如何获得所需的结果
- kubernetes - k8s gcp教程上的端口转发失败