2017-12-22 14 views
0

camelcase와 non camel case 파일 이름이 섞여있는 폴더가 있습니다. 나는 밑줄을 제거하기 위해 파이썬이 사용하고 난 쉽게 '낙타 케이스 예'와 'camelCaseExample을'대체를 조정할 수있는 기대했다 :Python 또는 C#을 사용하여 폴더의 모든 파일에서 camelCasing을 바꾸는 방법은 무엇입니까?

folder = r"C:/....." 
import os 
pathiter = (os.path.join(root, filename) 
    for root, _, filenames in os.walk(folder) 
    for filename in filenames 
) 
for path in pathiter: 
    newname = path.replace('_', ' ') 
    if newname != path: 
     os.rename(path,newname) 

이 사람이 날이 정규식에 대한 작업을 얻기 위해 편집 도와 주 시겠어요?

나는 운없이이 시도했다 :

newname = path.replace('%[A-Z][a-z]%', ' ') 

나는 또한이 될 경우 C#을 솔루션을 사용 할 수있을 것입니다 쉽게 당신은 아마 re 라이브러리를 사용하여 정규 표현식을 시도하려는 것

+0

왜 정규 표현식에'% '가 있습니까? – Galen

+0

SQL을 생각하고 있어야합니다. 나는 그것을 시도했지만 여전히 운이 없다. – user3486773

+1

소문자 알파 뒤에 대문자 알파가 오는 사이에 공백을 넣으려면 're.sub (r'([az]) ([AZ]) ', r'\ 1 \ 2 ','camelCaseExample ')'. ['re.sub'] (https://docs.python.org/3/library/re.html#re.sub) – Galen

답변

2

.

import re 
new_name = re.sub("(?=[A-Z])", " ", "testFileName") 
print(new_name) 

윌 출력 : 당신이이 후 소문자하려면

test File Name 

, 당신은 단지

new_name = new_name.lower() 

은 무엇 정규식가하고있는 것은 바로 전에 어떤 지점을 찾고 호출 할 수 있습니다 대문자와 공백으로 대체하십시오. 이 regex101 link은 더 잘 설명하는 데 도움이됩니다.

+0

이것은 논리를 파일 이름이 아닌 전체 경로에 적용합니다. 또한 단어 사이에 공백이 추가되므로 '이 파일'을 '이 파일'로 변환합니다. 어느 것이 전체 경로에 문제를 만듭니다. – user3486773

+0

원래 밑줄 버전에서 어떻게 처리 했습니까? – SCB

+0

['os.path.basename()'] (https://docs.python.org/3/library/os.path.html#os.path.basename)과 같은 것이 도움이 될 수 있습니다. – SCB