%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