답변:
처리하는 모든 문자열에 큰 따옴표가 있다고 가정 할 수없는 경우 다음과 같이 사용할 수 있습니다.
if string.startswith('"') and string.endswith('"'):
string = string[1:-1]
편집하다:
나는 당신이 방금 사용했던 해요 string
여기 예시를 위해하고 유용한 이름이 실제 코드에서 변수 이름으로,하지만 난라는 이름의 모듈이 있음을 경고 할 의무가 기분이 string
표준 라이브러리에. 자동으로로드되지는 않지만 사용 import string
하는 경우 변수가이를 가려 내지 않는지 확인하십시오.
첫 번째와 마지막 문자를 제거하려면 각각의 경우 해당 문자가 큰 따옴표 인 경우에만 제거를 수행합니다.
import re
s = re.sub(r'^"|"$', '', s)
RE 패턴은 사용자가 지정한 것과 다르며 작업은 sub
빈 대체 문자열 ( "대체")입니다 ( strip
문자열 방법이지만 다른 답변에서 알 수 있듯이 요구 사항과 상당히 다른 작업을 수행함).
startsWith
.
중요 : 작은 따옴표 나 큰 따옴표를 제거하기 위해 질문 / 답변을 확장하고 있습니다. 그리고 나는 스트립을 수행하기 위해 두 따옴표가 모두 존재하고 일치해야 함을 의미하는 질문을 해석합니다. 그렇지 않으면 문자열이 변경되지 않고 반환됩니다.
문자열 표현을 "디 쿼트"하려면 주위에 작은 따옴표 또는 큰 따옴표가있을 수 있습니다 (@tgray의 대답의 확장입니다).
def dequote(s):
"""
If a string has single or double quotes around it, remove them.
Make sure the pair of quotes match.
If a matching pair of quotes is not found, return the string unchanged.
"""
if (s[0] == s[-1]) and s.startswith(("'", '"')):
return s[1:-1]
return s
설명:
startswith
여러 대안 중 하나와 일치시키기 위해 튜플을 취할 수 있습니다. 배가 된 괄호에 대한 이유 ((
와 ))
우리가 하나 개의 매개 변수 전달이 너무 ("'", '"')
에을 startswith()
의 접두어보다는 두 개의 매개 변수를 허용 지정 "'"
및 '"'
접두사와 (무효) 시작 위치로 해석됩니다.
s[-1]
문자열의 마지막 문자입니다.
테스트 :
print( dequote("\"he\"l'lo\"") )
print( dequote("'he\"l'lo'") )
print( dequote("he\"l'lo") )
print( dequote("'he\"l'lo\"") )
=>
he"l'lo
he"l'lo
he"l'lo
'he"l'lo"
(나에게 정규 표현식은 읽기가 명확하지 않으므로 @Alex의 대답을 확장하려고 시도하지 않았습니다.)
len(s) >= 2
, 또는 유사한 것을 추가 할 수 있습니다 .
거의 완료되었습니다. http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip 에서 인용
chars 인수는 제거 할 문자 집합을 지정하는 문자열입니다.
[...]
chars 인수는 접두사 또는 접미사가 아닙니다. 오히려 해당 값의 모든 조합이 제거됩니다.
따라서 인수는 정규 표현식이 아닙니다.
>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>>
이것은 문자열의 양쪽 끝에서 여러 개의 따옴표를 먹기 때문에 정확히 요청한 것이 아닙니다!
에서 시작 Python 3.9
, 당신은 사용할 수 있습니다 removeprefix
및 removesuffix
:
'"" " " ""\\1" " "" ""'.removeprefix('"').removesuffix('"')
# '" " " ""\\1" " "" "'
strip
하여 a)이 메서드는 정규식을 인수로 사용하지 않습니다. b) 제공 한 정규식이 어쨌든 작동하지 않았을 것입니다. c)이 메서드는 하나가 아닌 모든 인접 문자를 제거하므로 당신은 두 개의 큰 따옴표를 잃었을 것입니다.strip('"')
.