인라인 변수가 있는 다중 줄 파이썬 문자열을 만들려면 어떻게 해야 합니까?
다중 줄 파이썬 문자열 내에서 변수를 사용할 수 있는 깔끔한 방법을 찾고 있습니다.다음을 수행하고 싶었다고 합니다.
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
'programing' 카테고리의 다른 글
Float - FCM 온백그라운드 메시지 핸들러가 등록되지 않아 Dart에서 백그라운드 메시지를 처리할 수 없습니다. (0) | 2023.07.09 |
---|---|
SQL Server의 임시 테이블로 인해 '이름이 지정된 개체가 이미 있습니다' 오류가 발생했습니다. (0) | 2023.07.09 |
Python/SciPy를 위한 피크 찾기 알고리즘 (0) | 2023.07.09 |
결과 세트를 닫은 후 Oracle이 커서를 제거하지 않음 (0) | 2023.07.09 |
앱이 실행될 때 Firebase에서 상태 업데이트를 기록하지 않도록 하는 방법 (0) | 2023.07.09 |