gpt4 book ai didi

python - 字符串操作 : partly convert to lowercase

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

如标题所述:将字符串从任意大小写转换为小写并保持部分不变的最佳方法是什么?例如一个字符串,如:FormatDate(%M)==2stArTDate(%Y/%m)==11/3 我想将其转换为 formatdate(%M)==2startdate(%Y/%m)==11/3 即除了大括号 () 之间的部分将其更改为小写。对于第一个例子,我想到了这样的事情:

>>> import re
>>> fdt = re.compile('(F|f)(O|o)(R|r)(M|m)(A|a)(T|t)(D|d)(A|a)(T|t)(E|e)\(')
>>> ss = "forMatDate(%M)==2"
>>> if fdt.match(ss):
... SS = ss.split('(')
... SS[0] = SS[0].lower()
... ss = "(".join(SS)
...
>>> print ss
formatdate(%M)==2

虽然它工作得很好,但我不太喜欢这样做。正则表达式很丑陋,它使事情几乎仅限于特定的字符串。有没有更好的(因此是动态的)方法来做到这一点?提前致谢。干杯!


更新:

我可能没有说得很清楚:它并不总是formatdate(),有时是startdate()enddate()连同 UserName==JohnDee 等等……(它是用户输入的一部分)但是格式总是一样的,我想要一些可重用的东西。因此,这是基于 Krumelur 的 脚本的更新版本。

>>> fdt = re.compile('\(%[dmwyMW].*\)')
>>> ss = "formatDate(%M)==4"
>>> st = "UserName==JohnDee"
>>>
>>> def dt_lower(sX):
... if fdt.search(sX):
... p1,p2 = sX.split('(',1)
... sX = "%s(%s" % (p1.lower(), p2)
... else: sX = sX.lower()
... return sX
...
>>> print dt_lower(ss)
formatdate(%M)==4
>>>
>>> print dt_lower(st)
username==johndee

这正是我想要的。感谢大家的帮助。干杯!

最佳答案

您的琴弦看起来总是这样吗?如果是这样,也许这就足够了:

p1,p2 = instr.split('(',1)
lc = '%s(%s' % (p1.lower(), p2)

关于python - 字符串操作 : partly convert to lowercase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212936/

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