[python] 조건부 문자열 형식을 구현하는 방법은 무엇입니까?

저는 파이썬에서 텍스트 기반 게임을 작업하고 있는데, 조건 집합에 따라 문자열을 다르게 포맷하려는 경우를 발견했습니다.

특히 방에있는 항목을 설명하는 텍스트를 표시하고 싶습니다. 문제의 항목 개체가 방 개체의 항목 목록에있는 경우에만 방 설명에 표시되기를 원합니다. 설정 방법은 조건에 따라 단순히 문자열을 연결하면 원하는대로 출력되지 않으며 각 경우에 다른 문자열을 사용하는 것이 좋습니다.

제 질문은 부울 조건의 결과를 기반으로 문자열을 형식화하는 파이썬적인 방법이 있습니까? for 루프 구조를 사용할 수 있지만 생성기 표현식과 비슷한 더 쉬운 것이 있는지 궁금합니다.

나는 이것과 비슷한 것을 문자열 형태로 찾고 있습니다.

num = [x for x in xrange(1,100) if x % 10 == 0]

내가 의미하는 바의 일반적인 예로서 :

print "At least, that's what %s told me." %("he" if gender == "male", else: "she")

이 예제가 유효한 Python이 아니라는 것을 알고 있지만 일반적으로 내가 찾고있는 것을 보여줍니다. 위와 유사한 부울 문자열 형식화에 유효한 표현식이 있는지 궁금합니다. 약간의 검색 결과 조건부 문자열 형식과 관련된 내용을 찾을 수 없었습니다. 일반적으로 형식 문자열에 대한 여러 게시물을 찾았지만 그게 제가 찾고있는 것이 아닙니다.

그런 것이 실제로 존재한다면 매우 유용 할 것입니다. 또한 제안 될 수있는 대체 방법도 열려 있습니다. 제공 할 수있는 도움에 미리 감사드립니다.



답변

코드는 사실 입니다 당신이 두 개의 문자, 쉼표와 콜론을 제거하면 파이썬 유효합니다.

>>> gender= "male"
>>> print "At least, that's what %s told me." %("he" if gender == "male" else "she")
At least, that's what he told me.

그러나 더 현대적인 스타일은 다음을 사용합니다 .format.

>>> s = "At least, that's what {pronoun} told me.".format(pronoun="he" if gender == "male" else "she")
>>> s
"At least, that's what he told me."

형식에 대한 논쟁 dict은 원하는 복잡성으로 구축 할 수 있습니다 .


답변

Python 3.6 이상에서는 다음 명령문 과 함께 형식이 지정된 문자열 리터럴 (f-strings : f"{2+2}"producs 라고 함 "4")을 사용합니다 if.

print(f"Shut the door{'s' if abs(num_doors) != 1 else ''}.")

백 슬래시사용 하여 f- 문자열의 표현식 부분에서 따옴표를 이스케이프 할 수 없으므로 큰 따옴표 "와 작은 '따옴표 를 혼합해야 합니다. (여전히 f- 문자열의 바깥 부분에 백 슬래시를 사용할 수 있습니다. 예를 들어 f'{2}\n'괜찮습니다)


답변

파이썬에는 다음 형식을 취하는 조건식이 있습니다.

A if condition else B

두 문자 만 생략하면 예제를 유효한 Python으로 쉽게 변환 할 수 있습니다.

print ("At least, that's what %s told me." %
       ("he" if gender == "male" else "she"))

내가 자주 선호하는 대안은 사전을 사용하는 것입니다.

pronouns = {"female": "she", "male": "he"}
print "At least, that's what %s told me." % pronouns[gender]


답변