首页 > 解决方案 > 将 Python 列表中字符串中第 N 个字符之前和之后的字符大写

问题描述

这是我的代码,我在列表中的特定字母之前和之后尝试大写字母。大写首府城市中每个“z”前后的前后字母大写。所有其他字母均为小写。包含该字母的所有城市都将存储在列表中并返回。如果我能得到一些输入,那就太好了。另外,如果我需要完全更改代码,请告诉我其他方式。我对此很陌生,任何输入都将不胜感激。谢谢

lst = ['brazzaville', 'zagreb', 'vaduz']

lst2 = []
for wrd in lst:
    newwrd = ''
    for ltr in wrd:
        if ltr in 'ua':
            newwrd += ltr.capitalize()
        else:
            newwrd += ltr

    lst2.append(newwrd)
print(lst2)

我不断得到这个:

['brAzzAville', 'zAgreb', 'vAdUz']

但我需要这个:

['brAzzAville', 'zAgreb', 'vadUz']

标签: python-3.xlistkeywordenumeratecountries

解决方案


以下策略包括遍历单词并将 z 的 index-1 和 index+1 处的字母(如果存在)替换为大写字母:

lst2 = []
for wrd in lst:
    wrd = wrd.lower()
    for idx, letter in enumerate(wrd):
        if letter == 'z':
            if idx-1 > 0 and wrd[idx - 1] != 'z':
                wrd = wrd.replace(wrd[idx - 1], wrd[idx - 1].upper())
            if idx+1 < len(wrd) and wrd[idx + 1] != 'z':
                wrd = wrd.replace(wrd[idx + 1], wrd[idx + 1].upper())
    if "z" in wrd:
        lst2.append(wrd)

print(lst2)
#['brAzzAville', 'zAgreb', 'vadUz']

推荐阅读