在python中,如何更改列表元素中每个字母的大小写?

时间:2012-02-03 00:12:18

标签: python list uppercase lowercase

我有一个名单:

name_list = ['brad', 'james', 'joe', 'alex']

并且需要将所有字母更改为大写,除了a之外,这样我就会:

name_list = ['BRaD', 'JaMES', 'JOE', 'aLEX']

我知道如何将所有字母更改为大写:

for name in range(0, len(name_list), 1:
  name_list[name] = name_list[name].upper

但我不知道如何不改变'a'的情况。

谢谢!

3 个答案:

答案 0 :(得分:13)

转换为大写,然后将“A”更改为“a”s

[name.upper().replace("A", "a") for name in name_list]

答案 1 :(得分:3)

以下是使用str.translate()的解决方案:

import string

table = string.maketrans(string.ascii_lowercase,
                         string.ascii_uppercase.replace('A', 'a'))

>>> [name.translate(table) for name in name_list]
['BRaD', 'JaMES', 'JOE', 'aLEX']

使用正则表达式的替代解决方案:

>>> import re
>>> regex = re.compile(r'[^a]+')
>>> repl = lambda m: m.group(0).upper()
>>> [regex.sub(repl, name) for name in name_list]
['BRaD', 'JaMES', 'JOE', 'aLEX']

答案 2 :(得分:1)

name_list = [''.join(l.upper() if l!='a' else l for l in word) for word in name_list]