我是python的新手,我正在使用python 2.7
我想创建脚本更改字符串中每个字母的大小写。
如果我通过“ABcdE”脚本将输出“abCDe”。
有很多方法,但我想使用List Comprehensions来完成这项任务。
我使用了以下代码:
str = 'abcDE';
str1 = [x for x in str if ord(x)>=97 and ord(x)<=122 x-32 elif ord(x)>=65 and ord(x)<=90 x+32];
这给了我 Invalid syntax
错误。
我不明白什么是错误。
我也试过了另一个版本:
请查看附件截图。
当你看最后一次尝试。当我删除更新变量代码时,它运行成功。 我的问题是为什么变量修改在理解中不起作用?
答案 0 :(得分:1)
您需要使用条件表达式;您正在使用过滤,过滤器不能改变生成的内容,只限制考虑的元素。
应改变左侧表达式,因此为迭代中的每个元素生成值的部分:
[x.upper() if 122 >= ord(x) >= 97 else x.lower()
for x in yourstring]
以上处理yourstring
中的所有字母(我将其重命名为避免使用内置名称str
),并且对于每个此类字母(在x
中),要么使用大写字母,如果是小写字母,否则使用小写字母。
演示:
>>> yourstring = 'abcDE'
>>> [x.upper() if 122 >= ord(x) >= 97 else x.lower() for x in yourstring]
['A', 'B', 'C', 'd', 'e']
如果您想要新字符串,请使用''.join()
:
''.join([x.upper() if 122 >= ord(x) >= 97 else x.lower()
for x in yourstring])
或您可以使用内置的str.swapcase()
function执行相同的工作。
答案 1 :(得分:0)
您可以执行以下操作:
str1 = [x.lower() if x.isupper() else x.upper() for x in str]