programing

인라인 변수가 있는 다중 줄 파이썬 문자열을 만들려면 어떻게 해야 합니까?

procenter 2023. 7. 9. 22:52
반응형

인라인 변수가 있는 다중 줄 파이썬 문자열을 만들려면 어떻게 해야 합니까?

다중 줄 파이썬 문자열 내에서 변수를 사용할 수 있는 깔끔한 방법을 찾고 있습니다.다음을 수행하고 싶었다고 합니다.

string1 = go
string2 = now
string3 = great

"""
I will $string1 there
I will go $string2
$string3
"""

비슷한 것이 있는지 알아보고 있습니다.$Perl에서 Python 구문의 변수를 나타냅니다.

그렇지 않은 경우 - 변수가 있는 다중 행 문자열을 만드는 가장 깨끗한 방법은 무엇입니까?

일반적인 방법은format()함수:

>>> s = "This is an {example} with {vars}".format(vars="variables", example="example")
>>> s
'This is an example with variables'

다중 행 형식 문자열에서 잘 작동합니다.

>>> s = '''\
... This is a {length} example.
... Here is a {ordinal} line.\
... '''.format(length='multi-line', ordinal='second')
>>> print(s)
This is a multi-line example.
Here is a second line.

변수가 있는 사전을 전달할 수도 있습니다.

>>> d = { 'vars': "variables", 'example': "example" }
>>> s = "This is an {example} with {vars}"
>>> s.format(**d)
'This is an example with variables'

요청한 내용(구문적 측면에서)과 가장 가까운 것은 템플릿 문자열입니다.예:

>>> from string import Template
>>> t = Template("This is an $example with $vars")
>>> t.substitute({ 'example': "example", 'vars': "variables"})
'This is an example with variables'

하지만 덧붙여야 할 것은format()기능은 쉽게 사용할 수 있고 가져오기 라인이 필요하지 않기 때문에 더 일반적입니다.

참고: Python에서 문자열 형식을 지정하는 권장 방법은 다음과 같습니다.format()수락된 회답에서 개략적으로 설명한 바와 같이저는 이 답변을 C 스타일 구문의 예로 보존하고 있습니다.

# NOTE: format() is a better choice!
string1 = "go"
string2 = "now"
string3 = "great"

s = """
I will %s there
I will go %s
%s
""" % (string1, string2, string3)

print(s)

약간의 판독:

Python 3.6의 f-string을 다중 행 또는 긴 단일 행 문자열 내부의 변수에 사용할 수 있습니다.다음을 사용하여 새 줄 문자를 수동으로 지정할 수 있습니다.\n.

다중 행 문자열의 변수

string1 = "go"
string2 = "now"
string3 = "great"

multiline_string = (f"I will {string1} there\n"
                    f"I will go {string2}.\n"
                    f"{string3}.")

print(multiline_string)

나는 거기에 갈 것이다
저는 지금 갈께요.
좋아요.

긴 한 줄 문자열의 변수

string1 = "go"
string2 = "now"
string3 = "great"

singleline_string = (f"I will {string1} there. "
                     f"I will go {string2}. "
                     f"{string3}.")

print(singleline_string)

나는 거기에 갈 것이다.갈게요. 좋습니다.


또는 따옴표가 세 개인 여러 줄의 f-string을 작성할 수도 있습니다.

multiline_string = f"""I will {string1} there.
I will go {string2}.
{string3}."""

"f-string 리터럴"이라고도 불리는 f-string 리터럴은 다음을 갖는 문자열 리터럴입니다.f값으로 대체될 식을 포함하는 곱슬곱슬한 대괄호를 사용합니다.

f-값은 런타임에 평가됩니다.

코드를 다음과 같이 다시 작성할 수 있습니다.

string1="go"
string2="now"
string3="great"
print(f"""
I will {string1} there
I will go {string2}
{string3}
""")

이를 통해 다음과 같은 이점을 얻을 수 있습니다.

I will go there
I will go now
great

당신은 여기에서 그것에 대해 더 배울 수 있습니다.

원하는 것은 다음과 같습니다.

>>> string1 = "go"
>>> string2 = "now"
>>> string3 = "great"
>>> mystring = """
... I will {string1} there
... I will go {string2}
... {string3}
... """
>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, 'string3': 'great', '__package__': None, 'mystring': "\nI will {string1} there\nI will go {string2}\n{string3}\n", '__name__': '__main__', 'string2': 'now', '__doc__': None, 'string1': 'go'}
>>> print(mystring.format(**locals()))

I will go there
I will go now
great

python-graphql 클라이언트에서 객체를 변수로 전달하는 솔루션을 찾는 사람이 있다면 다음과 같이 사용했습니다.

query = """
{{
  pairs(block: {block} first: 200, orderBy: trackedReserveETH, orderDirection: desc) {{
    id
    txCount
    reserveUSD
    trackedReserveETH
    volumeUSD
  }}
}}
""".format(block=''.join(['{number: ', str(block), '}']))

 query = gql(query)

나처럼 모든 곱슬머리 교정기를 탈출해야 합니다: "{{, "}}"

사전을 에 전달할 수 있습니다. 각 키 이름은 관련된 각 값에 대한 변수가 됩니다.

dict = {'string1': 'go',
        'string2': 'now',
        'string3': 'great'}

multiline_string = '''I'm will {string1} there
I will go {string2}
{string3}'''.format(**dict)

print(multiline_string)


목록을 에 전달할 수도 있습니다. 이 경우 각 값의 인덱스 번호가 변수로 사용됩니다.

list = ['go',
        'now',
        'great']

multiline_string = '''I'm will {0} there
I will go {1}
{2}'''.format(*list)

print(multiline_string)


위의 두 솔루션 모두 동일하게 출력됩니다.

저는 거기로 가겠습니다.
저는 지금 갈께요.

print (f" \
      What you want to write {var_one} \n \
      What you want to write {var_two} \n \
      What you want to write {var_three} \n \
      Et cetera {var_four}")

이것이 저에게 효과가 있었던 것입니다.누군가에게 도움이 될 수도 있어요, 건배

언급URL : https://stackoverflow.com/questions/10112614/how-do-i-create-a-multiline-python-string-with-inline-variables

반응형