programing

f-string과 원시 문자열 리터럴 결합

elecom 2023. 5. 3. 20:49
반응형

f-string과 원시 문자열 리터럴 결합

사용하는 동안 f-string을 어떻게 사용하는지 궁금합니다.rRaw String 리터럴을 가져옵니다.현재 아래와 같이 보유하고 있지만 임의의 이름으로 대체할 수 있는 옵션을 원합니다.AlexF-스트링을 추가한 다음 교체하는 것을 생각하고 있습니다.Alex곱슬곱슬한 교정기를 사용하고 내부에 사용자 이름을 넣었지만 이것은 작동하지 않습니다.r.

username = input('Enter name')
download_folder = r'C:\Users\Alex\Downloads'

다음을 결합할 수 있습니다.f와의 실랑이를 위해.r원시 문자열의 경우:

user = 'Alex'
dirToSee = fr'C:\Users\{user}\Downloads'
print (dirToSee) # prints C:\Users\Alex\Downloads

rF-문자열 처리가 아닌 백슬래시 이스케이프 시퀀스 처리만 비활성화합니다.

문서 견적:

'f'는 'r'과 결합할 수 있지만 'b' 또는 'u'와는 결합할 수 없으므로 원시 형식의 문자열은 사용할 수 있지만 형식의 바이트 리터럴은 사용할 수 없습니다.

...

'r' 또는 'R' 접두사가 없는 경우 문자열 및 바이트 리터럴의 이스케이프 시퀀스가 해석됩니다.

또는 다음을 사용할 수 있습니다.str.format()방법.

name = input("What is your name? ")
print(r"C:\Users\{name}\Downloads".format(name=name))

이것은 다음을 삽입하여 원시 문자열을 포맷합니다.name가치.

당신이 파일 경로로 작업하기 때문에, 저는 f-string을 피하고 경로 조작에 적합한 라이브러리를 사용할 것입니다.예를 들어 다음 작업을 수행할 수 있습니다.

from pathlib import Path
username = input('Enter name')
download_folder = Path('C:/Users', username, 'Downloads')

이 접근 방식은 다음과 같은 다른 일반적인 파일 작업도 제공합니다.open

또는 를 사용할 수도 있습니다.

다른 사람들이 언급했듯이, 그것은 정말로 가능합니다.r그리고.f그러나 보간된 문자열은 기본적으로 원시 문자열이 아니기 때문에 주의해야 합니다.

not_escaped = "\not_escaped"
half_escaped = rf"escaped_{not_escaped}"

print(half_escaped)
### outputs:
# escaped_
# ot_escaped

당신은 사용해야 할 것입니다.r보간된 문자열에 대해서도:

escaped = r"\n_escaped"
full_escaped = rf"escaped_too_{escaped}"

print(full_escaped)
# escaped_too_\n_escaped

이를 수행하는 가장 간단한 방법은 암묵적인 줄 연속성을 사용하여 문자열을 구성 요소로 분할하는 것입니다. 즉, 괄호 안에 있는 'r' 문자열과 'f' 문자열을 분리합니다.다음은 'normal', 'formated' 및 'raw' 문자열 리터럴이 포함된 matplotlib 제목의 예입니다(자세한 내용은 여기 참조).

plt.title('Blind Surveys 01-FEB-2022\n'
         f'Recording{n}; Mean dose rate: {m.get_mean_doserate()*1000:.4f}'
         r' $\mathrm{\mu}$Sv/hr', fontsize='x-large')

여기에 이미지 설명 입력

질문에 더 잘 적용할 수 있도록 변수 선언에 암묵적인 줄 연속성을 사용할 수도 있습니다.

user = ‘Alex’
dir_out = (r‘C:\Users\’
           f‘{user}’
           r‘\Downloads’)
print(dir_out) #C:\Users\Alex\Downloads

인정하건대 이것은 이 간단한 시나리오에 약간 지나친 것처럼 보이지만 끈이 더 복잡해지면 당신의 친구가 될 것입니다!

언급URL : https://stackoverflow.com/questions/58302531/combine-f-string-and-raw-string-literal

반응형