Удаление любых кавычек из строки в python

#python #replace #re

#python #заменить #python-re

Вопрос:

Пример строк:

 '" "Hello World" "'
'" Today isn't a good day for hello world"'
'" Today "is" a good day for hello world "'
  

Вывод:

 '"Hello World'"
'"Today isnt a good day for hello world'"
'"Today is a good day for hello world'"
  

Я попытался заменить строку, но не могу этого сделать str.replace(""'", "") . Есть ли хороший способ сделать это с помощью регулярного выражения или даже просто метода replace?

Комментарии:

1. strip возможно?

2. strip обычно используется для первого и последнего символа в строке.

3. Единственный известный мне хакерский способ сделать это str.replace("'", "").replace('"','')

4. Подождите, кавычки вокруг "is" должны оставаться? Или какие-либо кавычки удалены?

5. strip(characters) представилось бы после просмотра документов

Ответ №1:

Вы можете вызвать replace дважды.

Вы могли бы использовать str.translate:

 >>> s = '" "Hello World" "'
>>> remove_quotes = str.maketrans('', '', "'"")
>>> s.translate(remove_quotes)
' Hello World '
  

Вы могли бы использовать регулярное выражение.

Любой из этих подходов будет работать.

Ответ №2:

Используется str.translate для выполнения обеих замен одновременно.

 quote_dropper = str.maketrans('', '', ''"')  # Ideally done once up front, and reused

# ... later, when you need to strip quotes from a string ...
mystr = mystr.translate(quote_dropper)
  

str.maketrans просто выполняет простое dict сопоставление кодов для обоих символов None , и именно так вы указываете translate удалять указанные символы при обнаружении.

Комментарии:

1. приведенный выше вариант кажется интересным, но я не думаю, что он работает на Python2. Тем не менее, отлично работает на Python3.

2. @Jason: Да, translate метод сильно отличается от Python 2 (или, точнее, он примерно такой же для Python 2 unicode , но отличается для Python 2 str , который translate ближе к Python 3 bytes.translate ). На Python 2 для str вам не нужно было бы создавать таблицу перевода, вы бы просто сделали mystr.translate(None, ''"') . Я не включил это в ответ, потому что Python 2 больше не поддерживается вообще, начиная с января прошлого года, поэтому, если вы пишете новый код на Python 2, у вас проблемы.