此问题已在此处有答案:
How can I invert (swap) the case of each letter in a string?(9个回答)
昨天关门了。
我打开了这个问题,尽管它在C# lang.中存在重复(没有需要的相关解决方案)。
我尝试用大写字符替换给定字符串中的所有小写字符,反之亦然。这应该以最小的时间复杂度同时完成(因为在大量的口头翻译中使用)。
IO:
- input:* str_1 =“Www.GooGle.com“
- output:*“wWW.gOOgLE.COM”
验证码:
import re # import RegEx lib
str_1 = "Www.GooGle.com" # variable tested
def swapLowerUpper(source):
# takes source string
# returns group 0 regex to lower and group 1 regex to upper, by source
return re.sub(r'([A-Z]+)|([a-z]+)', lambda x: x.group(0).lower(), source)
# check the output
print(swapLowerUpper(str_1)
问题:
我很难触发第二个组(其索引为1)并对其应用属性“.upper()”。我的尝试是将其打开为{x:x.group(0).lower(),x:x.group(1).upper()}失败。
3条答案
按热度按时间5w9g7ksd1#
如果你的目标是以最少的时间复杂度完成任务,也许利用Python内置方法比依赖正则表达式更有效:
使用随机生成的长度为1000个字符的mixalpha字符串进行5000次迭代的效率比较:
输出:
vlju58qv2#
检查
x.group(1)
或x.group(2)
是否匹配,并返回相应的替换项。jecbmhm33#
尝试:
图纸: