python - .lower() for x in list,不工作,但在另一种情况下工作
问题描述
下面给了我:'int'对象没有属性'lower'。
我想将我从传入的参数创建的列表中的每个项目转换为小写。
我将 tuple 转换为 list ,据我所知,元组无法更改,然后当我尝试小写时出现错误。
def is_purple(*lfp):
lower1 = [i for i in lfp]
empty_string = [x.lower() for x in lower1]
return empty_string
print(is_purple(1,2,"colors","Purple"))
但是,如果我这样做:
print([x.lower() for x in ["A","B","C"]])
有用。我点击搜索并输入
.lower() 不起作用,我太愚蠢了,看不出我做错了什么:(
解决方案
因为,您的列表中有非字符串。只有字符串才有.lower()
功能。所以在你做之前.lower()
,检查它是否是一个字符串:
def is_purple(*lfp):
empty_string = [x.lower() if isinstance(x, str) else x for x in lfp]
return empty_string
print(is_purple(1,2,"colors","Purple"))
# [1, 2, 'colors', 'purple']
isinstance(x, str)
检查是否x
为字符串。.lower()
如果这返回一个else ,我们会这样做,True
保留列表项原样。
推荐阅读
- python - 如何将具有多字名称的行添加到熊猫数据框中
- c++ - 创建对象时 int 变量的默认大小?
- javascript - 用另一个数组值过滤多维数组 - JavaScript
- arrays - 在 mongo DB 中查找比较集合数据与数组的聚合结果
- joomla2.5 - Joomla 2.5 页面的 W3C 验证:“JavaScript 资源不需要 type 属性。”
- grafana - 如何正确配置 Grafana 中的 Jaeger 数据源?
- pagespeed-insights - 是否可以检测到是否使用 Google PageSpeed Insights 测试了网站?
- sql - PostgreSQL:十进制/数字数据类型上的数字字段溢出 - 为什么会出现此错误
- css - 如何在打字稿中添加 zIndex
- c# - 如何获取 Visual Studio 部署项目属性值