#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 2unicode
, но отличается для Python 2str
, которыйtranslate
ближе к Python 3bytes.translate
). На Python 2 дляstr
вам не нужно было бы создавать таблицу перевода, вы бы просто сделалиmystr.translate(None, ''"')
. Я не включил это в ответ, потому что Python 2 больше не поддерживается вообще, начиная с января прошлого года, поэтому, если вы пишете новый код на Python 2, у вас проблемы.