使用python将字符串中的特定单词改为大写或小写

时间:2012-08-02 12:33:50

标签: python

我有Python字符串如下

string1='copy /q /y /d /e /i /r /h /v /s D:\path1\path2 D:\path3\path4'   
string2='copy /Q /y /D /E /i /r  D:\path2\path5 D:\path3\path4 /h /V /s'
string2='copy /q /y /D /e D:\path6\path7 D:\path8\path9 /i /R /h /V /S'

我想将所有/ q,/ y,/ d,/ e,/ i,/ r,/ h,/ v,/ s转换为大写或小写。

谢谢

4 个答案:

答案 0 :(得分:5)

您可以使用str.split(),遍历子字符串,将以斜杠开头的字符串转换为小写字母,然后再次str.join()

" ".join(s.lower() if s.startswith("/") else s for s in string.split())

对于大写字母,请将s.lower()替换为s.upper()

答案 1 :(得分:3)

re.sub()与回调一起使用,将该标志放入模式中的一个组中,并在回调中重新组合该组。

答案 2 :(得分:0)

以下是使用re.sub的简单示例:

def change_case(match):
    mstr=match.group()
    if mstr.lower() == mstr:
       return mstr.upper()
    else:
       return mstr.lower()

output = re.sub(r'/.',change_case,'copy /q /y /d /e /i /r /h /v /s D:\path1\path2 D:\path3\path4')
print output #'copy /Q /Y /D /E /I /R /H /V /S D:\\path1\\path2 D:\\path3\\path4'

这将转换任何“/”之后的第一个字母的大小写。如果您确实要限制匹配的字符集,则可以使用r'/[abcdef]'仅更改a,b,c,d,e或f上的大小写。

答案 3 :(得分:0)

这应该有效:

re.sub(re.compile('/\w'), lambda x : x.group(0).upper(), 'test /a /b')