如何在 python 中反转字符串中的大写锁定?

How to reverse caps lock in a string in python?

我有一个字符串,可以用大写锁定来写,也可以不用。 “With caps lock”表示它要么像 tHIS,要么像 THIS。使用“isupper()”函数很容易检测到第二种情况,但我无法找到可靠地找到第一种情况的方法。对于长度为 1 的字符串,我使用“islower()”来检测它们是否应该大写,所以这应该不是问题

我使用的代码

import re
inp = input()
trutable = ""
for i in inp:
    if i.isupper():
        trutable += "1"
    if i.islower():
        trutable += "0"
pattern = re.compile(r'^01')
answ = re.match(pattern, trutable)
if inp.isupper() or answ != None or (len(inp) == 1 and inp.islower()):
    inp = inp.capitalize()

print(inp)

您可以采用这种方法:

s = "hdCdjdC"

print("".join([x.upper() if x.islower() else x.lower() for x in s]))

输出

HDcDJDc

对于文本字符替换 python 字符串有 str.maketrans and str.translate 方法:

from string import ascii_lowercase as ascii_up, ascii_uppercase as ascii_low

def reverseCase(text):
    m = str.maketrans(ascii_low + ascii_up, ascii_up + ascii_low)
    return text.translate(m)


for w in ("tata", "TATA", "TaTa", "42"):
    print(reverseCase(w))

输出:

TATA
tata
tAtA
42

检测事物

[...] either is like 'tHIS' [...]

您可以使用:

def isWordStartingLowerAndContinuingUpperCased(word):
    """Check if words starts with lower case and continues upper cased."""
    return word[0].islower() and word[1:].isupper()

for w in ("tHIS", "This", "THIS"):
    print(w, ":", isWordStartingLowerAndContinuingUpperCased(w))

得到

tHIS : True 
This : False
THIS : False

规范化文本时注意误报 - 有大量单词属于全大写且不应更改 - 缩写:

NBL、美国、MIB、CIA、FBI、NSA、MI6、NASA、DARPA 等

你要不要试试:

s = "hELLO wORLD!"
print(s.swapcase())

输出:

Hello World!