我有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转换为大写或小写。
谢谢
答案 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')