반응형
몇 가지 배경 정보 : 우리는 제가 작업하는 고대 웹 기반 문서 데이터베이스 시스템을 가지고 있습니다. 거의 전적으로 "보통"확장자 (.doc, .xls, .ppt)를 가진 MS Office 문서로 구성되어 있습니다. 이들은 모두 일종의 임의의 ID 번호 (예 : 1245.doc)에 따라 이름이 지정됩니다. SharePoint로 전환 중이며 이러한 모든 파일의 이름을 바꾸고 폴더로 정렬해야합니다. 모든 종류의 정보 (예 : 문서 제목에 해당하는 ID 번호)가 포함 된 CSV 파일이 있으므로이 파일의 이름을 변경하는 데 사용하고 있습니다. ID 번호 제목의 이름을 바꾸는 짧은 Python 스크립트를 작성했습니다.
그러나 문서 제목 중 일부에는 슬래시 및 파일 제목에 포함 할 수있는 기타 잘못된 문자가 있으므로 밑줄로 바꾸고 싶습니다.
bad_characters = ["/", "\\", ":", "(", ")", "<", ">", "|", "?", "*"]
for letter in bad_characters:
filename = line[2].replace(letter, "_")
foldername = line[5].replace(letter, "_")
for
루프 내부에 print letter
를 추가하면 교체해야 할 문자가 인쇄되지만 실제로 해당 문자를 저와 같이 밑줄로 바꾸지는 않습니다. 원합니다.
내가 여기서 잘못하고있는 것이 있습니까?
해결 방법
그 이유는 filename
과 foldername
이 루프가 반복 될 때마다 버려지기 때문입니다. .replace ()
메서드는 문자열을 반환하지만 결과를 어디에도 저장하지 않습니다.
다음을 사용해야합니다.
filename = line[2]
foldername = line[5]
for letter in bad_characters:
filename = filename.replace(letter, "_")
foldername = foldername.replace(letter, "_")
하지만 정규식을 사용하여 할 것입니다. 더 깨끗하고 빠릅니다.
p = re.compile('[/:()<>|?*]|(\\\)')
filename = p.sub('_', line[2])
folder = p.sub('_', line[5])
참조 페이지 https://stackoverflow.com/questions/3523054
반응형
'파이썬' 카테고리의 다른 글
파이썬 이름으로 Python 메서드 호출 (0) | 2020.11.10 |
---|---|
파이썬 Add another tuple to a tuple of tuples (0) | 2020.11.09 |
파이썬 Python 2의 유형 힌트 (0) | 2020.11.09 |
파이썬 Enter를 누르지 않고 파이썬에서 raw_input (0) | 2020.11.09 |
파이썬 How to check if all values of a dictionary are 0 (0) | 2020.11.09 |
댓글