我想查找并替换字符串中的大写字符(如 _upperchar)。
例如:输入:HeLLo 大写字母
输出:_He_L_Lo _Capital _Letters
我试过:
print "saran"
value = "HeLLo Capital Letters"
for word in value:
print word
if word.isupper():
char = "_"
value = value.replace(word,char + word)
print value
我得到的输出是,
_He___L___Lo _Capital ___Letters
有人请帮我减少多余的下划线。
请您参考如下方法:
看看re.sub
>>> import re
>>> re.sub(r'([A-Z])', r'_\1', value)
'_He_L_Lo _Capital _Letters'
您的示例中的问题不是您在迭代字符串时修改它。 Python 将在 for 循环的开始处创建 iter(value),并且在此之后更改为 value 不会影响循环,因为字符串是不可变的。问题是 value.replace 将替换字符串中所有出现的地方,例如有 3 个大写 L,每个 L 将得到 3 个下划线 (value.replace('L', ' _L') 发生了 3 次)。
