prosource

명명된 매개 변수의 문자열 형식을 지정하시겠습니까?

probook 2023. 7. 22. 10:10
반응형

명명된 매개 변수의 문자열 형식을 지정하시겠습니까?

정말 간단한 질문인 건 알지만, 구글 검색 방법을 전혀 모르겠어요.

어떻게 해야 합니까?

print '<a href="%s">%s</a>' % (my_url)

하도록my_url두 번 사용됩니까?이름을 "이름"으로 지어야 할 것 같습니다.%s그런 다음 구문 분석에 딕트를 사용합니다만, 올바른 구문을 모르겠습니다.


참고로, 나는 내가 그냥 사용할 수 있다는 것을 알고 있습니다.my_url파람에서 두 번, 하지만 그게 중요한 게 아닙니다 :)

print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}

Python 2.6+ 및 Python 3에서는 새로운 문자열 형식 지정 방법을 사용하도록 선택할 수 있습니다.

print('<a href="{0}">{0}</a>'.format(my_url))

당신이 논쟁을 반복하는 것으로부터 당신을 구하거나, 혹은.

print('<a href="{url}">{url}</a>'.format(url=my_url))

이름이 지정된 매개 변수를 원하는 경우.

print('<a href="{}">{}</a>'.format(my_url, my_url))

이는 엄밀한 위치에 있으며() 형식의 주의 사항() 인수는 이름 없는 인수가 먼저 와야 하는 Python 규칙을 따르고, 이름 있는 인수 다음에 *args(목록 또는 튜플과 같은 시퀀스) 및 *kwargs(당신에게 무엇이 좋은지 알고 있는 경우 문자열로 키가 지정된 딕트)를 따릅니다.보간점은 레이블에서 명명된 값을 대체하여 먼저 결정된 다음 왼쪽에서 위치를 지정합니다.그래서, 당신은 이것도 할 수 있어요.

print('<a href="{not_my_url}">{}</a>'.format(my_url, my_url, not_my_url=her_url))

하지만 이건...

print('<a href="{not_my_url}">{}</a>'.format(my_url, not_my_url=her_url, my_url))

Python 3.6+의 솔루션

Python 3.6은 리터럴 문자열 포맷을 도입하여 문자열 외부에서 명명된 매개 변수를 반복하지 않고 명명된 매개 변수를 포맷할 수 있습니다.

print(f'<a href="{my_url:s}">{my_url:s}</a>')

평가합니다.my_url그래서 만약 그것이 정의되지 않는다면 당신은 받을 것입니다.NameError사실, 대신에my_url문자열로 평가되는 한 임의의 파이썬 식을 작성할 수 있습니다.:s형식 지정 코드).문자열이 아닐 수도 있는 식의 결과에 대한 문자열 표현을 원하는 경우 대체:s타고!s일반적인 미리 정의된 문자열 형식과 같습니다.

리터럴 문자열 형식에 대한 자세한 내용은 처음 소개된 PEP 498을 참조하십시오.

당신은 구문론에 중독될 것입니다.

또한 C# 6.0, EcmaScript 개발자들은 이 구문을 더 잘 알고 있습니다.

In [1]: print '{firstname} {lastname}'.format(firstname='Mehmet', lastname='Ağa')
Mehmet Ağa

In [2]: print '{firstname} {lastname}'.format(**dict(firstname='Mehmet', lastname='Ağa'))
Mehmet Ağa

HTML 페이지를 작성하는 경우 단순 문자열 보간이 아닌 템플릿 엔진을 사용하려고 합니다.

다른 옵션은 다음과 같습니다.format_map:

print('<a href="{s}">{s}</a>'.format_map({'s': 'my_url'}))

사전적인 방법뿐만 아니라 다음 형식도 알고 있으면 유용할 수 있습니다.

print '<a href="%s">%s</a>' % (my_url, my_url)

여기서는 약간 중복되고 사전 방식은 코드를 수정할 때 오류가 발생할 가능성이 낮지만 여러 삽입에 튜플을 사용할 수 있습니다.첫번째%s튜플의 첫 번째 요소, 두 번째 요소를 대체합니다.%s는 튜플의 두 번째 요소로 대체되며, 튜플의 각 요소에 대해서도 마찬가지입니다.

이 구문을 추천합니다.

dictionary_of_string_values = {
                               "my_text" : "go to w3schools",
                               "my_url" : "https://www.w3schools.com",
                               }

print ('<a href="{my_url}">{my_text}</a>'.format(**dictionary_of_string_values))

많은 자리 표시자로 문자열을 포맷해야 할 때 매우 유용합니다.

다음과 같이 더 짧게 만들 수도 있습니다.

print ('<a href="{my_url}">{my_text}</a>'.format(
                             **{
                               "my_text" : "go to w3schools",
                               "my_url" : "https://www.w3schools.com",
                               }
                            )
                        )

언급URL : https://stackoverflow.com/questions/2451821/string-formatting-named-parameters

반응형