개발하자
파이썬에서 잘못된 경로 문자를 제거하는 방법은 무엇입니까?
Cuire
2022. 11. 6. 10:42
반응형
파이썬에서 잘못된 경로 문자를 제거하는 방법은 무엇입니까?
파이썬에서 잘못된 경로 문자(예: Windows의 "\" 또는 ":")를 제거하는 가장 교차 플랫폼 방법은 무엇입니까?
솔루션
이상적인 해결책은 없는 것 같기 때문에 나는 비교적 제한적이기로 결정하고 다음 코드를 사용했다.
def remove(value, deletechars):
for c in deletechars:
value = value.replace(c,'')
return value;
print remove(filename, '\/:*?"<>|')
해당 문자는 에 있으며, 현재 시스템에 따라 "\" 또는 ":"가 됩니다.
python을 사용하는 경우 경로와 관련된 교차 플랫폼 문제를 피하십시오.
불행히도, 허용되는 문자 집합은 파일 시스템마다 OS마다 다릅니다.
:
- 유니코드 문자 및 확장 문자 집합(128–255)의 문자를 포함하여 현재 코드 페이지의 거의 모든 문자를 이름에 사용합니다.
허용되는 문자 목록은 파일 시스템을 처음 포맷한 시스템의 OS 및 로케일에 따라 달라질 수 있습니다.
.NET은 와 를 가지고 있지만, 파이썬에서 그것들을 어떻게 불러야 할지 모르겠다.
- Mac OS: NUL은 항상 제외되며, "/"는 POSIX 계층에서 제외되며, ":"는 Apple API에서 제외됩니다.
- Linux:
가장 좋은 방법은 모든 플랫폼에서 지나치게 보수적이거나 파일 이름을 만들어 오류를 처리하는 것입니다.
여기서 가장 안전한 방법은 의심스러운 캐릭터를 교체하는 것입니다. 따라서 영숫자, -, _, 공백 또는 마침표가 아닌 모든 항목을 대체(또는 제거)할 수 있습니다. 그 방법은 다음과 같습니다.
import re
re.sub(r'[^\w_. -]', '_', filename)
위의 문자는 문자, , 또는 공백이 아닌 모든 문자를 이스케이프합니다. 따라서 전체 경로를 볼 경우 승인된 문자 목록에도 os.sep를 넣어야 합니다.
다음은 출력 예입니다.
In [27]: re.sub(r'[^\w\-_\. ]', '_', r'some\*-file._n\\ame')
Out[27]: 'some__-file._n__ame'
반응형