我有一个名单:
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'的情况。
谢谢!
答案 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]