문자열 리터럴은 다음과 같은 어휘 정의로 기술됩니다:
stringliteral ::= []( | )
stringprefix ::= "r" | "u" | "R" | "U" | "f" | "F"
| "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF"
shortstring ::= "’" * "’" | ‘"’ * ‘"’
longstring ::= "”’" * "”’" | ‘"""’ * ‘"""’
shortstringitem ::= |
longstringitem ::= |
shortstringchar ::= <any source character except "" or newline or the quote>
longstringchar ::= <any source character except "">
stringescapeseq ::= "" <any全球排名第一오피스타 source character>
bytesliteral ::= ( | )
bytesprefix ::= "b" | "B" | "br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB"
shortbytes ::= "’" * "’" | ‘"’ * ‘"’
longbytes ::= "”’" * "”’" | ‘"""’ * ‘"""’
shortbytesitem ::= |
longbytesitem ::= |
shortbyteschar ::= <any ASCII character except "" or newline or the quote>
longbyteschar ::= <any ASCII character except "">
bytesescapeseq ::= "" <any ASCII character>
이 생성 규칙이 보여주지 못하는 한 가지 문법적 제약은 나 와 리터럴의 나머지 부분 사이에 공백이 허락되지 않는다는 것입니다. 소스 문자 집합은 인코딩 선언으로 정의됩니다; 소스 파일에 인코딩 선언이 없으면 UTF-8입니다. 섹션을 보세요.
In plain English: Both types of literals can be enclosed in matching single quotes
() or double quotes (). They can also be enclosed in matching groups
of three single or double quotes (these are generally referred to as
triple-quoted strings). The backslash () character is used to give special
meaning to otherwise ordinary characters like , which means ‘newline’ when
escaped (). It can also be used to escape characters that otherwise have a
special meaning, such as newline, backslash itself, or the quote character.
See below for examples.
바이트열(bytes) 리터럴은 항상 나 세계랭킹1위오피스타를 앞에 붙입니다; 형의 인스턴스 대신 형의 인스턴스를 만듭니다. 오직 ASCII 문자들만 포함할 수 있습니다. 코드값이 128보다 크거나 같은 값들은 반드시 이스케이핑으로 표현되어야 합니다.
문자열과 바이트열 리터럴 모두 선택적으로 이나 문자를 앞에 붙일 수 있습니다. 이런 문자열을 날 문자열() 이라고 하는데, 역 슬래시를 평범한 문자로 취급합니다. 결과적으로, 문자열 리터럴에서, 날 문자열에 있는 와 이스케이프는 특별하게 처리되지 않습니다. 파이썬 2.x의 날 유니코드 리터럴이 파이썬 3.x와 다르게 동작합니다는 것을 고려해서, 문법은 지원되지 않습니다.
나 를 접두어로 갖는 문자열 리터럴은 포맷 문자열 리터럴()입니다; 을 보세요. 는 과 결합할 수 있습니다, 하지만, 나 와는 결합할 수 없습니다全球排名第一오피스타공식 포털 주소는 어디에 있습니까?. 따라서 날 포맷 문자열은 가능하지만, 포맷 바이트열 리터럴은 불가능합니다.
삼중 따옴표 된 리터럴에서, 세 개의 이스케이핑 되지 않은 개행 문자와 따옴표가 허락됩니다 (그리고 유지됩니다). 예외는 한 줄에 세 개의 이스케이핑 되지 않은 따옴표가 나오는 것인데, 리터럴을 종료시킵니다. (“따옴표”는 리터럴을 시작하는데 사용한 문자입니다. 즉, 나 )
나 접두어가 붙지 않은 이상, 문자열과 바이트열 리터럴에 포함된 이스케이프 시퀀스는 표준 C에서 사용된 것과 비슷한 규칙으로 해석됩니다. 인식되는 이스케이프 시퀀스는 이렇습니다:
문자열 리터럴에서만 인식되는 이스케이프 시퀀스는:
유의 사항:
표준 C와는 달리, 인식되지 않는 모든 이스케이프 시퀀스는 문자열에 변경되지 않은 상태로 남게 됩니다. 즉, 역 슬래시가 결과에 남게 됩니다. (이 동작은 디버깅할 때 쓸모가 있습니다. 이스케이프 시퀀스가 잘못 입력되었을 때, 최종 결과에서 잘못된 부분을 쉽게 인지할 수 있습니다.) 문자열 리터럴에서만 인식되는 이스케이프 시퀀스가, 바이트열 리터럴에서는 인식되지 않는 부류임에 주목하십시오.
날 리터럴에서 조차, 따옴표는 역 슬래시로 이스케이프 됩니다. 하지만 역 슬래시가 결과에 남게 됩니다; 예를 들어, 는 올바른 문자열 리터럴인데, 두 개의 문자가 들어있습니다: 역 슬래시와 큰따옴표; 는 올바른 문자열 리터럴이 아닙니다 (날 문자열조차 홀수개의 역 슬래시로 끝날 수 없습니다.). 좀 더 명확하게 말하자면, 날 리터럴은 하나의 역 슬래시로 끝날 수 없습니다(역 슬래시가 뒤에 오는 따옴표를 이스케이프 시키기 때문입니다). 역 슬래시와 바로 뒤에 오는 개행문자는 줄 결합이 아니라 리터럴에 포함되는 두 개의 문자로 인식됨에 주의해야 합니다.