스택큐힙리스트

문자열을 유효한 파일 이름으로 바꾸시오? 본문

카테고리 없음

문자열을 유효한 파일 이름으로 바꾸시오?

스택큐힙리스트 2023. 4. 4. 06:17
반응형

제가 파일 이름으로 사용하려는 문자열이 있습니다. 그래서 Python을 사용하여 파일 이름으로 허용되지 않는 모든 문자를 제거하고 싶습니다.

나는 엄격한 것을 좋아한다. 따라서, 문자, 숫자, 그리고 _-.() 와 같은 작은 세트의 다른 문자만 남기고 싶다. 가장 우아한 해결책은 무엇인가?

파일 이름은 여러 운영 체제 (Windows, Linux 및 Mac OS)에서 유효해야합니다. 라이브러리에 있는 노래 제목으로 된 MP3 파일이며, 3 대의 컴퓨터 간에 공유되고 백업됩니다.

답변 1

당신은 # $ @ & @ # ^ @ $ & (하지만 그들의 라이선스를 고려하세요!)이 임의의 텍스트에서 슬러그를 만드는 방법을보고 할 수 있습니다. 슬러그는 URL 및 파일 이름에 적합합니다.

장고 텍스트 유틸은 이와 같은 유형의 것들에 대한 황금 기준으로 생각되는 함수 slugify()을 정의합니다. 기본적으로, 그들의 코드는 다음과 같습니다.

import unicodedata

import re

def slugify(value, allow_unicode=False):

Taken from https://github.com/django/django/blob/master/django/utils/text.py

Convert to ASCII if 'allow_unicode' is False. Convert spaces or repeated

dashes to single dashes. Remove characters that aren't alphanumerics,

underscores, or hyphens. Convert to lowercase. Also strip leading and

trailing whitespace, dashes, and underscores.

value = str(value)

if allow_unicode:

value = unicodedata.normalize('NFKC', value)

else:

value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')

value = re.sub(r'[^\w\s-]', '', value.lower())

return re.sub(r'[-\s]+', '-', value).strip('-_')

한국어로 번역하세요.

그리고 이전 버전:

def slugify(value):

Normalizes string, converts to lowercase, removes non-alpha characters,

and converts spaces to hyphens.

import unicodedata

value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')

value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())

value = unicode(re.sub('[-\s]+', '-', value))

# ...

return value

슬러기피케이션과는 관련이 없기 때문에 제외했지만, 이 외에도 더 많은 것이 있습니다.

답변 2

문자열을 유효한 파일 이름으로 바꾸는 방법에 대해서 알아보겠습니다. 이 작업은 파일을 저장하거나 업로드할 때, 경로에 파일 이름으로 사용할 때 등 여러 가지 상황에서 필요합니다.

먼저, 유효한 파일 이름은 파일 시스템이나 운영체제에 따라 다릅니다. 대체적으로 윈도우 운영체제에서는 파일 이름으로 사용할 수 없는 특수 기호들이 많이 있습니다. 이러한 기호들은 파일 이름으로 사용할 수 없으므로, 이를 제거해주어야 합니다.

그리고 파일 이름은 대소문자를 구분합니다. 윈도우에서는 파일 이름이 대소문자를 구분하지 않지만, 맥 OS나 리눅스에서는 대소문자를 구분합니다. 따라서 파일 이름으로 사용할 때는 대소문자를 구분하여 작성해야 합니다.

또한, 파일 이름은 255자를 넘을 수 없으며, 파일 이름에는 공백이 들어갈 수 없습니다. 이러한 제한 사항들을 고려하여 파일 이름을 작성해주어야 합니다.

이제 문자열을 유효한 파일 이름으로 바꾸는 방법을 알아보겠습니다. 문자열에서 특수 기호나 공백을 제거해야 합니다. 이를 위해 정규 표현식을 활용할 수 있습니다. 예를 들어, Python에서는 다음과 같은 코드를 사용하여 파일 이름을 정제할 수 있습니다.

```python

import re

def clean_filename(filename):

cleaned_filename = re.sub(r'[^\w\s\-_\.]', '', filename).strip()

return cleaned_filename[:255]

```

위의 코드에서는 정규 표현식을 사용하여 특수 기호를 제거하고, 파일 이름에 사용할 수 없는 공백을 제거합니다. 또한, 파일 이름이 255자를 초과하지 않도록 제한합니다.

마지막으로, 파일 이름에 대소문자를 구분하여 작성해야 합니다. 이를 위해 문자열을 모두 소문자로 변환해도 되지만, 보존해야 할 대문자들도 있을 수 있으므로, 각각의 문자가 대문자인지 확인하여 대소문자 구분을 유지해주는 것이 좋습니다.

이렇게 문자열을 유효한 파일 이름으로 바꾸는 방법에 대해서 알아보았습니다. 파일 이름은 중요한 역할을 수행하므로, 유효성 검사를 철저히 하여 문제가 없도록 해주어야 합니다.

반응형
Comments