字符串操作:部分转换为小写

2024-09-28 21:50:29 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所说:在保持部分不变的情况下,将字符串从任何大小写转换为小写的最佳方法是什么?e、 g.像:FormatDate(%M)==2stArTDate(%Y/%m)==11/3这样的字符串,我想把它转换成formatdate(%M)==2或{},也就是说,除了大括号()之间的那部分之外,把它改成小写。对于第一个例子,我想到了如下:

>>> 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()或{}和{}一起,等等。。(这是用户输入的一部分)但是格式总是一样的,我想要一些可重用的东西。因此,这是基于Krumelur's脚本的更新版本。在

^{pr2}$

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


Tags: 方法字符串re标题情况大括号ss例子
3条回答

你的琴弦总是像这样吗?如果是这样的话,也许这就足够了:

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

我想你再也找不到比这更“Python”了:

Python 2.7.1 (r271:86832, May 27 2011, 21:41:45) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ss = "forMatDate(%M)==2"
>>> if ss.lower().startswith('formatdate'):
...     i,j = ss.split('(', 1)
...     ss = '('.join((i.lower(), j))
... 
>>> ss
'formatdate(%M)==2'

不需要正则表达式,只要^{}。在

同样适用于python3.2。在

您可以将regex check替换为

if ss.lower().startswith('formatdate'):

相关问题 更多 >