python-3.x - 将 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']
解决方案
以下策略包括遍历单词并将 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']
推荐阅读
- javascript - 使用 setTimeout 混淆垃圾邮件机器人的表单
- html - 在按钮单击时将选定的值从 mat-select 发送到控制器
- android - V1 签名的 Release APK 不适用于 Android Q 测试版,但适用于 V2 签名的 APK
- git - 在合并请求中压缩新提交
- javascript - 从 DOM 中删除图像 url
- datetime - 如何在 ionic 3 中设置最小日期和时间
- javascript - VueJS - 绑定自定义道具不适用于 b-form 组件
- python-3.x - 我想删除特定值不增加的行。有更快/更优雅的方式吗?
- c# - 如何计算具有相似时间跨度的一天中的时间跨度总和
- spring - 使用 powermock 和 junit 运行 Spring Boot 集成测试时出错?