원시 Python 문자열에 따옴표를 포함하는 방법


89

중히 여기다:

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'

그렇다면 우리는 어떻게 따옴표를 얻지 만 슬래시가 아닌가?

그리고 제안하지 마십시오 r'what"ever'. 왜냐하면 질문은 우리가 두 가지 유형의 따옴표를 어떻게 포함 할 것인가?

관련


원시 문자열 (정규식 및 Python 이외의 것이 백 슬래시를 해석하는 기타 경우)에 대한 동기 부여 사용 사례에서 백 슬래시는 정규식 엔진 / 모든 엔진에서 처리되기 때문에 괜찮습니다. 이것은 원시 문자열을 사용하려는 모든 경우에 적용되지는 않지만 백 슬래시를 제거하기 전에 사용 사례에 적용되는지 여부를 고려해야합니다.
user2357112는 Monica를 지원

답변:


146

문자열에 큰 따옴표를 사용하고 작은 따옴표는 사용하지 않으려면 대신 작은 따옴표를 구분 기호로 사용할 수 있습니다.

r'what"ever'

문자열에 두 가지 종류의 따옴표가 모두 필요한 경우 세 개의 따옴표로 묶인 문자열을 사용하십시오.

r"""what"ev'er"""

문자열에 두 종류의 삼중 따옴표로 묶인 문자열을 포함하려면 (극히 드문 경우) 할 수 없으며 이스케이프와 함께 원시가 아닌 문자열을 사용해야합니다.


1
우수한. 세 따옴표로 묶인 문자열도 날 것으로 만들 수 있다는 것을 깨달았습니다.
mpen 2011 년

3
나도 마지막 문단이 마음에 들어 ...이게 정확히 내가 알아 내려는 것이었다. 다른 인용 스타일의 한계. 나는 파이썬 r"raw string"과 C #을 비교 @"@-quoted string"하고있다"""triple quotes"""
mpen

2
여기 파이썬 newb, 약간 혼란스럽고 r'what"ever"구문 분석 오류가 아닙니까? 그랬어 r'what"ever'?
nmr 2014-08-14

1
Python 개발자에게 무엇이 문제입니까? 다른 모든 언어처럼 단순히 이스케이프 시스템을 구현하지 않은 이유는 무엇입니까?
Jamby

6
@Jamby 그들은 이스케이프 시스템을 가지고 있으며, 원시가 아닌 문자열 (앞에 r이없는 문자열)과 함께 사용하고 거의 모든 다른 언어처럼 작동 합니다 .
Coburn

10

파이썬에는 문자열을 처리하는 여러 가지 방법이 있습니다. 다음 문자열 구문을 사용하면 큰 따옴표를 사용할 수 있습니다.

'''what"ever'''

질문 의 원시 부분을 놓쳤습니다 .
mpen 2011 년

10

어떤 유형의 인용 (싱글, 더블, 트리플)이 필요한 경우 문자열을 "결합"(0) 할 수 있습니다.

>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''

원시 문자열이 아닌 문자열과 "결합"(0) 할 수도 있습니다.

>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'

(0) : 사실, 파이썬 파서는 문자열을 결합하며 여러 문자열을 생성하지 않습니다. "+"연산자를 추가하면 여러 문자열이 생성되고 결합됩니다.


5

신경 쓰지 마세요. 답은 삼중 따옴표로 묶인 원시 문자열입니다.

r"""what"ever"""

3

이 답변을 우연히 발견하고 큰 도움이되었지만 사소한 구문 문제를 발견했기 때문에 다른 사람들의 가능한 좌절감을 구해야한다고 느꼈습니다. 3 중 따옴표로 묶인 문자열은 설명 된대로이 시나리오에서 작동하지만 문자열에서 원하는 "가 문자열 자체의 끝에 발생하는 경우 :

somestr = """This is a string with a special need to have a " in it at the end""""

"" ""(4) 행의 따옴표가 문자열 판독기를 혼동하기 때문에 실행시 오류가 발생합니다. 이미 문자열 끝에 도달했다고 생각한 다음 거기에서 임의의 "를 찾습니다.이를 확인할 수 있습니다. "" "와 같이 4 개의 따옴표에 공백을 삽입하면 오류가 발생하지 않습니다.

이 특별한 경우에는 다음 중 하나를 사용해야합니다.

somestr = 'This.....at the end"'

또는 위에 설명 된 방법을 사용하여 "및 '가 혼합 된 여러 문자열을 빌드 한 다음 사실 후에 연결합니다.


1

새로운 Python f String 호환 기능을 포함하기 위해 :

var_a = 10

f"""This is my quoted variable: "{var_a}". """

f- 문자열은 이스케이프를 지원하지 않습니까? 그래서 당신은 할 수 있습니다 f"foo\"bar".
mpen dec

-3

사용하다:

dqote='"'
sqote="'"

'+'연산자를 사용하고 dqotesquote변수를 필요한 것을 얻으십시오.

원하는 경우 sed -e s/",u'"/",'"/g -e s/^"u'"/"'"/다음을 시도 할 수 있습니다.

dqote='"'
sqote="'"
cmd1="sed -e s/" + dqote + ",u'" + dqote + "/" + dqote + ",'" + dqote + '/g -e s/^"u' + sqote + dqote + '/' + dqote + sqote + dqote + '/'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.