gpt4 book ai didi

python - char python 之间的大写

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:52 27 4
gpt4 key购买 nike

我需要帮助如何在两颗星之间获得大写字母。

输入:“S*t*a*r*s 无处不在*”

输出:“STARs are everyWHERE”

我的代码在这里:

def trans(s):
x = ""
a = False
for j in range(len(s)):
if s[j] == "*" or a:
a = True
if a:
x += s[j].upper()
else:
x += s[j]
return "".join(x.replace("*",""))

问题是我不知道 in loop 在哪里设置回 False。现在它只看到 * 并将所有内容变为大写。

state machine

最佳答案

注意:其他答案很好地向您展示了如何修复您的代码。这是执行此操作的另一种方法,一旦您学习了正则表达式,您可能会发现它更容易。

您可以使用 re.sub 函数。

>>> s = "S*t*a*r*s are every*where*"
>>> re.sub(r'\*([^*]*)\*', lambda m: m.group(1).upper(), s)
'STaRs are everyWHERE'

在正则表达式中 * 是一个特殊的元字符,它重复前一个标记零次或多次。为了匹配文字 *,您需要在正则表达式中使用 \*

所以 \*([^*]*)\* 正则表达式匹配每一对 * block ,即 (*t*, *r*, *where*) 和中间字符(* block 内的字符)是被组 1 捕获。

对于每个匹配项,re.sub 函数将用 string-inside-*.upper() 替换匹配的 *..* block > 。即,它将对 * 中存在的字符串应用 upper() 函数,并将结果作为替换字符串返回。

关于python - char python 之间的大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29446215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com