如何查找和替换字符串中的大写字母
admin
2023-07-30 20:43:18
0

问:

如题,有个字符串“HeLLo Capital Letters”,我想将其中的大写字母替换成\”_大写字母\”,即输出”_He_L_Lo _Capital _Letters“

我的解法是:

value = \”HeLLo Capital Letters\”

for word in value:

    if word.isupper():

        char = \”_\”

        value = value.replace(word,char + word)

print value

但是输出确是:_He___L___Lo _Capital ___Letters,哪里错了呢?

答1:

在每一步加一句打印,可以发现你的方法的执行步骤是这样的:

Replacing \’H\’ with \’_H\’:

    _HeLLo Capital Letters

Replacing \’L\’ with \’_L\’:

    _He_L_Lo Capital _Letters

Replacing \’L\’ with \’_L\’:

    _He__L__Lo Capital __Letters

Replacing \’C\’ with \’_C\’:

    _He__L__Lo _Capital __Letters

Replacing \’L\’ with \’_L\’:

    _He___L___Lo _Capital ___Letters

可以看出在替换L时,因为L出现了两次,所以每次都会以 _L 进行替换,也执行了两次,加上最后一个单词的L,L一共替换了三次,所以结果中L前面是三个_

答2:

可以参考下re.sub

针对你的问题的代码如下:

>>> import re

>>> re.sub(r\'([A-Z])\’, r\’_\\1\’, value)

\’_He_L_Lo _Capital _Letters\’

答3:

可以使用str.join方法,如果是大写字母则在前面加上_,否则保持原样

代码如下:

>>>s=  \”HeLLo Capital Letters\”

>>>print(\”\”.join([\”_\” + ch if ch.isupper() else ch for ch in s]))

_He_L_Lo _Capital _Letters

而且测试显示,这种方法要比答2中的正则方法快

原址:Find and replace the uppercase characters

欢迎到 @StackOverFlow精选 提问,建议,唠嗑。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...