首页 > 解决方案 > 如何用 Python 正则表达式交换大小写?

问题描述

我试图制作一个单行函数来交换字符串大小写,但它不起作用。一切都是有道理的,但是该函数返回的是传入它的相同字符串,没有任何更改。

import re

def swap_case(string):
    return re.sub('([A-Z])([a-z]+)', r'\1'.lower()+'\2'.upper(), string)

标签: pythonregex

解决方案


您的正则表达式模式可能与输入字符串的结构不匹配,例如,如果第一个字符是小写,然后是第二个大写。这是一个使用re.sub回调函数的版本:

def swap_case(string):
    return re.sub(r'.', lambda x: x.group().upper() if x.group() == x.group().lower() else x.group().lower(), string)

inp = "Hello World"
print(swap_case(inp))  # hELLO wORLD

上述解决方案通过将每个字符从小写转换为大写,反之亦然。


推荐阅读