[python] 파이썬 형식 문자열에서 % s는 무엇을 의미합니까?

%s파이썬에서 무엇을 의미합니까? 그리고 다음 코드 비트는 무엇을합니까?

예를 들어 …

 if len(sys.argv) < 2:
     sys.exit('Usage: %s database-name' % sys.argv[0])

 if not os.path.exists(sys.argv[1]):
     sys.exit('ERROR: Database %s was not found!' % sys.argv[1])



답변

문자열 형식화 구문입니다 (C에서 빌림).

“PyFormat”을 참조하십시오 :

파이썬은 값을 문자열로 포맷하는 것을 지원합니다. 여기에는 매우 복잡한 표현식이 포함될 수 있지만 가장 기본적인 사용법은 %s자리 표시자를 사용 하여 문자열에 값을 삽입하는 것 입니다.

편집 : 다음은 정말 간단한 예입니다.

#Python2
name = raw_input("who are you? ")
print "hello %s" % (name,)

#Python3+
name = input("who are you? ")
print("hello %s" % (name,))

%s토큰은 나 문자열을 삽입 (잠재적 포맷) 할 수 있습니다. 것을 알 %s토큰이 난 후 문자열에 전달 무엇으로 대체 %기호. 또한 여기에 튜플을 사용하고 있습니다 (튜플을 사용하여 하나의 문자열 만 선택 사항 인 경우)는 여러 문자열을 하나의 문에 삽입하고 서식을 지정할 수 있음을 보여줍니다.


답변

앤드류의 대답은 좋습니다.

조금 더 도움을주기 위해 한 문자열에서 여러 형식을 사용하는 방법은 다음과 같습니다.

"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".

문자열 대신 정수를 사용하는 경우 % s 대신 % d를 사용하십시오.

"My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12


답변

format방법은 Python 2.6에서 도입되었습니다. 더 유능하고 사용하기가 훨씬 어렵지 않습니다.

>>> "Hello {}, my name is {}".format('john', 'mike')
'Hello john, my name is mike'.

>>> "{1}, {0}".format('world', 'Hello')
'Hello, world'

>>> "{greeting}, {}".format('world', greeting='Hello')
'Hello, world'

>>> '%s' % name
"{'s1': 'hello', 's2': 'sibal'}"
>>> '%s' %name['s1']
'hello'


답변

%s파이썬의 문자열 형식화 기능을 사용할 때 문자열 의 변환 유형을 나타냅니다 . 보다 구체적으로, 함수를 %s사용하여 지정된 값을 문자열로 변환 str()합니다. 값 변환에 함수를 %r사용 하는 변환 유형 과 이것을 비교하십시오 repr().

문자열 형식 에 대한 문서를 살펴보십시오 .


답변

%s%d형식 지정 또는 자리는 포맷 스트링 / 소수 / 수레 등을위한

가장 많이 사용되는 형식 지정자 :

%s : 문자열

%d : 소수

%f : 플로트

자기 설명 코드 :

name = "Gandalf"
extendedName = "the Grey"
age = 84
IQ = 149.9
print('type(name):', type(name)) #type(name): <class 'str'>
print('type(age):', type(age))   #type(age): <class 'int'>   
print('type(IQ):', type(IQ))     #type(IQ): <class 'float'>   

print('%s %s\'s age is %d with incredible IQ of %f ' %(name, extendedName, age, IQ)) #Gandalf the Grey's age is 84 with incredible IQ of 149.900000 

#Same output can be printed in following ways:


print ('{0} {1}\'s age is {2} with incredible IQ of {3} '.format(name, extendedName, age, IQ))          # with help of older method
print ('{} {}\'s age is {} with incredible IQ of {} '.format(name, extendedName, age, IQ))          # with help of older method

print("Multiplication of %d and %f is %f" %(age, IQ, age*IQ)) #Multiplication of 84 and 149.900000 is 12591.600000          

#storing formattings in string

sub1 = "python string!"
sub2 = "an arg"

a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)

c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)

print(a)    # "i am a python string!"
print(b)   # "i am a python string!"
print(c)    # "with an arg!"
print(d)   # "with an arg!"


답변

두 번째 질문에 대한 답변으로 :이 코드는 무엇을합니까? …

이것은 명령 행 인수를 허용하는 Python 스크립트의 표준 오류 검사 코드입니다.

그래서 첫 번째 if진술은 다음과 같이 번역됩니다. 만약 당신이 나에게 논쟁을 건네주지 않았다면, 앞으로 당신이 나에게 어떻게 논쟁을 건네 야하는지 말해 줄 것입니다.

Usage: myscript.py database-name

다음 if명령문은 스크립트에 전달한 ‘database-name’이 실제로 파일 시스템에 존재하는지 확인합니다. 그렇지 않은 경우 다음과 같은 메시지가 나타납니다.

ERROR: Database database-name was not found!

로부터 문서 :

argv [0]은 스크립트 이름입니다 (전체 경로 이름인지 여부에 따라 운영 체제에 따라 다름). 인터프리터에 -c 명령 행 옵션을 사용하여 명령을 실행 한 경우 argv [0]은 문자열 ‘-c’로 설정됩니다. Python 인터프리터에 스크립트 이름이 전달되지 않은 경우 argv [0]은 빈 문자열입니다.


답변

다음은 Python3의 좋은 예입니다.

  >>> a = input("What is your name?")
  What is your name?Peter

  >>> b = input("Where are you from?")
  Where are you from?DE

  >>> print("So you are %s of %s" % (a, b))
  So you are Peter of DE