programing

처음과 마지막 큰따옴표를 어떻게 벗길 수 있습니까?

subpage 2023. 8. 2. 09:05
반응형

처음과 마지막 큰따옴표를 어떻게 벗길 수 있습니까?

다음에서 큰따옴표를 제거하고 싶습니다.

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

반응형