Python Как удалить первую и последнюю двойные кавычки

Я хочу удалить двойные кавычки из

string = '"" " " ""\\1" " "" ""'

чтобы стать

string = '" " " ""\\1" " "" "'

Я попытался использовать rstrip, lstrip и strip('[^\"]|[\"$]'), но это не сработало.

Как я могу это сделать? Спасибо, что помогли мне.

Ответ 1

Если кавычки, которые вы хотите удалить, всегда будут "первыми и последними", как вы сказали, тогда вы можете просто использовать:

string = string[1:-1]

Ответ 2

Если вы не можете предположить, что все строки, которые вы обрабатываете, имеют двойные кавычки, вы можете использовать что-то вроде этого:

if string.startswith('"') and string.endswith('"'):
    string = string[1:-1]

Edit:

Я уверен, что вы просто использовали string как имя переменной для примера здесь, а в вашем реальном коде оно имеет полезное имя, но я чувствую себя обязанным предупредить вас, что есть модуль с именем string в стандартных библиотеках. Он не загружается автоматически, но если вы когда-либо используете import string, убедитесь, что ваша переменная не затмевает его.

Ответ 3

Чтобы удалить первый и последний символы и в каждом случае сделать удаление, только если рассматриваемый символ является двойной цитатой:

import re

s = re.sub(r'^"|"$', '', s)

Обратите внимание, что шаблон RE отличается от того, который вы указали, и операция sub ( "substitute" ) с пустой заменой (strip является строковым методом, но делает что-то очень отличное от ваших требований, как указывали другие ответы).

Ответ 4

ВАЖНО:. Я расширяю вопрос/ответ, чтобы разделить одиночные или двойные кавычки. И я интерпретирую этот вопрос как означающий, что BOTH котировки должны присутствовать и сопоставляться, чтобы выполнить полосу. В противном случае строка возвращается без изменений.

Чтобы "декорировать" строковое представление, которое может иметь одинарные или двойные кавычки вокруг него (это расширение ответа @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 может принимать кортеж, чтобы соответствовать любой из нескольких альтернатив. Причина для круглых скобок DOUBLED (( и )) заключается в том, что мы передаем ОДИН параметр ("'", '"') в startswith(), чтобы указать допустимые префиксы, а не TWO-параметры "'" и '"', которые будут интерпретироваться в качестве префикса и (недопустимой) стартовой позиции.

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.)

Ответ 5

Если строка всегда отображается так:

string[1:-1]

Ответ 6

Почти сделано. Цитата из http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip

Аргумент chars - это строка с указанием набора символов удалены.

[...]

Аргумент chars не является префиксом или суффикс; скорее, все комбинации его значения удаляются:

Таким образом, аргумент не является регулярным выражением.

>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>> 

Обратите внимание, что это не совсем то, что вы запросили, потому что он ест несколько кавычек с обоих концов строки.

Ответ 7

Если вы уверены, что есть "в начале и в конце, которые вы хотите удалить, просто выполните:

string = string[1:len(string)-1]

или

string = string[1:-1]

Ответ 8

Удалить определенную строку из начала и конца строки.

s = '""Hello World""'
s.strip('""')

> 'Hello World'

Ответ 9

У меня есть код, которому нужно снять одиночные или двойные кавычки, и я не могу просто ast.literal_eval его.

if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]:
    arg = arg[1:-1]

Это похоже на ответ ToolmakerSteve, но он позволяет 0 строк длины и не превращает одиночный символ " в пустую строку.

Ответ 10

найдите позицию первого и последнего "в вашей строке

>>> s = '"" " " ""\\1" " "" ""'
>>> l = s.find('"')
>>> r = s.rfind('"')

>>> s[l+1:r]
'" " " ""\\1" " "" "'

Ответ 11

в вашем примере вы можете использовать полосу, но вам нужно предоставить пространство

string = '"" " " ""\\1" " "" ""'
string.strip('" ')  # output '\\1'

Обратите внимание, что\'на выходе - стандартные кавычки python для вывода строки

значение вашей переменной равно '\\ 1'

Ответ 12

Функция ниже удалит пустые spces и вернет строки без кавычек. Если кавычек нет, он вернет ту же строку

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