python字符串删除字符_从python字符串中删除大写字母

字符串是不可变的,所以你不能从字面上删除字符,但你可以创建一个跳过这些字符的新字符串。

最简单的方法是:

s = ''.join(ch for ch in s if not ch.isupper())

如果你想在没有for的情况下出于某种原因(比如作业要求),我们可以将其作为显式循环写出来,然后将其转换为while。所以:

result = []

for ch in s:

if not ch.isupper(): result.append(ch)

s = ''.join(result)

要更改循环,我们必须手动设置并接下来使用迭代器,但是使用普通的int作为索引而不是迭代器可能更容易理解:

result = []

i = 0

while i < len(s):

ch = s[i]

if not ch.isupper(): result.append(ch)

i += 1

s = ''.join(result)

当然,这更加冗长,效率稍低,容易出错,但除此之外基本相同,它符合您的奇怪要求。

在现实生活中,可能有更好的方法可以做到这一点 - 例如,如果您只关心ASCII上限,str.translate带有从全部大写到无的地图应该非常快 - 但我认为你的老师没有你希望你在那些方向思考,他们希望你明确地思考循环。 (当然在str.translate或re.sub等中有一个循环,该循环只是隐藏在你看不到它的封面下。)

如果你需要对列表中的多个字符串执行此操作,则将其包装在函数中,并使用理解将其应用于列表中的每个字符串 - 或者可以将其作为循环语句写出来,如果您愿意,将其转换为while循环,方式完全相同。例如:

def remove_caps(s):

result = []

i = 0

while i < len(s):

ch = s[i]

if not ch.isupper(): result.append(ch)

i += 1

return ''.join(result)

strings = ['aBC', 'Abc', 'abc', '']

new_strings = []

i = 0

while i < len(strings):

new_strings.append(remove_caps(strings[i]))

i += 1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值