为了账号安全,请及时绑定邮箱和手机立即绑定

字符串循环大小写(小写 - 大写 - 大写)

字符串循环大小写(小写 - 大写 - 大写)

犯罪嫌疑人X 2021-12-16 15:59:55
我知道如何在 python 中将选定的文本从小写转换为大写,反之亦然:使用string.swapcase();  而且我知道如何将所选文本大写:与string.capitalize();  但我想得到一个循环小写 -大写- 所选文本的大写。可以用python吗?编辑大写:文本;大写:文本;小写:文本。可能的解决方案### Get the current selection.  sText=clipboard.get_selection()  ### Analyse.  if sText.islower():      sText=sText.capitalize()  elif sText.isupper():      sText=sText.lower()  else:      sText=sText.upper()  ### Send the result.  keyboard.send_keys(sText)  这个解决方案的问题是文本没有保持选中状态。
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

我的第一个解决方案

解决了!


# Get the current selection.

sText=clipboard.get_selection()

lLength=len(sText)


# Analyse.

if sText.islower():

    sText=sText.capitalize()

elif sText.isupper():

    sText=sText.lower()

else:

    sText=sText.upper()


# Send the result.

keyboard.send_keys(sText)

keyboard.send_keys("<shift>+<left>"*lLength)  

这有效! 但是大写的文本只是第一个单词。


另一个更好的解决方案(混合大小写是所有单词)

# Get the current selection.

sText=clipboard.get_selection()

lLength=len(sText)


try:

    if not store.has_key("textCycle"):

        store.set_value("state","title")


except:

    pass


# get saved value of textCycle

state = store.get_value("textCycle")



# modify text and set next modfication style

if state == "title":

    #sText=sText.capitalize()

    sText=sText.title()

    newstate = "lower"


elif state == "lower":

    sText=sText.lower()

    newstate = "upper"


elif state == "upper":

    sText=sText.upper()

    newstate = "title"


else:

    newstate = "lower"


# save for next run of script

store.set_value("textCycle",newstate)   


# Send the result.

keyboard.send_keys(sText)

keyboard.send_keys("<shift>+<left>"*lLength)


查看完整回答
反对 回复 2021-12-16
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信