처음과 마지막 큰따옴표를 어떻게 벗길 수 있습니까?
다음에서 큰따옴표를 제거하고 싶습니다.
string = '"" " " ""\\1" " "" ""'
얻는 방법:
string = '" " " ""\\1" " "" "'
사용하려고 했습니다.rstrip
,lstrip
그리고.strip('[^\"]|[\"$]')
하지만 효과가 없었습니다.
어떻게 해야 하나요?
삭제할 인용문이 항상 말씀하신 대로 "처음과 마지막"인 경우 다음을 사용할 수 있습니다.
string = string[1:-1]
처리하는 모든 문자열에 큰따옴표가 있다고 가정할 수 없는 경우 다음과 같은 방법을 사용할 수 있습니다.
if string.startswith('"') and string.endswith('"'):
string = string[1:-1]
편집:
당신이 방금 사용한 것이 분명합니다.string
여기서 예시를 위한 변수 이름으로서 그리고 당신의 실제 코드에서 그것은 유용한 이름을 가지고 있지만, 나는 당신에게 표준 라이브러리에 이름이 붙은 모듈이 있다는 것을 경고해야 할 의무가 있습니다.자동으로 로드되지는 않지만, 사용할 경우import string
변수가 이를 덮지 않도록 하십시오.
중요: 질문/답변을 단일 또는 이중 따옴표로 묶도록 확장합니다.그리고 저는 이 질문이 스트립을 수행하기 위해서는 두 인용문이 모두 존재하고 일치해야 한다는 것을 의미한다고 해석합니다.그렇지 않으면 문자열이 변경되지 않고 반환됩니다.
문자열 표현을 "인용"하려면, 문자열 표현 주위에 단일 따옴표 또는 이중 따옴표가 있을 수 있습니다(@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,
or there are less than 2 characters, return the string unchanged.
"""
if (len(s) >= 2 and 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의 답변을 확장하려고 하지 않았습니다.)
첫 번째와 마지막 문자를 제거하고 각 경우 해당 문자가 이중 따옴표인 경우에만 제거를 수행합니다.
import re
s = re.sub(r'^"|"$', '', s)
RE 패턴은 당신이 준 패턴과 다르며, 작업은 다음과 같습니다.sub
빈 대체 문자열을 사용하는 경우("중산")strip
문자열 방식이지만 다른 답변에서 알 수 있듯이 요구 사항과 상당히 다른 작업을 수행합니다.
문자열이 항상 표시되는 대로인 경우:
string[1:-1]
거의 끝났다.http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip 에서 인용.
chars 인수는 제거할 문자 집합을 지정하는 문자열입니다.
[...]
chars 인수는 접두사나 접미사가 아니며 값의 모든 조합이 제거됩니다.
그래서 그 주장은 정규 표현이 아닙니다.
>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>>
이것은 문자열의 양쪽 끝에서 여러 개의 따옴표를 먹기 때문에 정확히 당신이 요청한 것이 아닙니다!
문자열의 시작과 끝에서 결정된 문자열을 제거합니다.
s = '""Hello World""'
s.strip('""')
> 'Hello World'
에서 시작Python 3.9
사용할 수 있습니다.
'"" " " ""\\1" " "" ""'.removeprefix('"').removesuffix('"')
# '" " " ""\\1" " "" "'
처음과 끝에 제거할 "가 있으면 다음을 수행합니다.
string = string[1:len(string)-1]
또는
string = string[1:-1]
저는 싱글따옴표나 더블따옴표를 제거해야 하는 코드가 있는데, 단순히 ast.literal_eval로 할 수 없습니다.
if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]:
arg = arg[1:-1]
길이 하며, 인 ToolmakerSteve를."
빈로줄줄로▁into빈.
예를 들어 스트립을 사용할 수 있지만 공간을 제공해야 합니다.
string = '"" " " ""\\1" " "" ""'
string.strip('" ') # output '\\1'
출력의 \'는 문자열 출력에 대한 표준 파이썬 따옴표입니다.
변수 값은 '\\1'입니다.
아래 함수는 빈 공백을 제거하고 따옴표 없이 문자열을 반환합니다.따옴표가 없으면 동일한 문자열(삭제됨)을 반환합니다.
def removeQuote(str):
str = str.strip()
if re.search("^[\'\"].*[\'\"]$",str):
str = str[1:-1]
print("Removed Quotes",str)
else:
print("Same String",str)
return str
문자열에서 첫 번째와 마지막 "의 위치를 찾습니다.
>>> s = '"" " " ""\\1" " "" ""'
>>> l = s.find('"')
>>> r = s.rfind('"')
>>> s[l+1:r]
'" " " ""\\1" " "" "'
언급URL : https://stackoverflow.com/questions/3085382/how-can-i-strip-first-and-last-double-quotes
'programing' 카테고리의 다른 글
스크립트에서 stdout을 캡처하시겠습니까? (0) | 2023.08.02 |
---|---|
스프링 부트 - 키클로크를 비활성화하는 방법은 무엇입니까? (0) | 2023.08.02 |
UI 도구 모음에 UI 레이블 추가 (0) | 2023.08.02 |
SSIS vs.오라클 데이터 통합업체 (0) | 2023.08.02 |
다른 모듈이 필요한 Node.js 모듈을 유닛 테스트하는 방법과 글로벌 요구 기능을 조롱하는 방법은 무엇입니까? (0) | 2023.08.02 |