Python – цитата с обратной косой чертой в струнных литералах

У меня есть строка, которая содержит как двойные кавычки, так и обратную косую черту, которые я хочу установить для переменной в Python. Однако, когда я пытаюсь установить его, кавычки или косые черты либо удаляются, либо экранируются. Вот пример:

>>> foo = 'baz "\"' >>> foo 'baz ""' 

Так что вместо baz "\" как будто я хочу, чтобы я стал baz "" . Если я попытаюсь избежать обратную косую черту, это не поможет:

 >>> foo = 'baz "\\"' >>> foo 'baz "\\"' 

Который теперь соответствует тому, что я положил, но не был тем, чего я изначально хотел. Как вы обошли эту проблему?

4 Solutions collect form web for “Python – цитата с обратной косой чертой в струнных литералах”

Вы вводите в заблуждение вывод – второй подход, который вы делаете, делает то, что вы хотите, вы просто не верите в это. 🙂

 >>> foo = 'baz "\\"' >>> foo 'baz "\\"' >>> print foo baz "\" 

Кстати, есть еще одна строка, которая может быть немного понятнее:

 >>> print r'baz "\"' baz "\" 

Используйте необработанную строку:

 >>> foo = r'baz "\"' >>> foo 'baz "\\"' 

Обратите внимание, что, хотя это выглядит неправильно, на самом деле это правильно. В строке foo есть только одна обратная косая черта.

Это происходит потому, что, когда вы просто вводите foo в приглашении, python отображает результат __repr__() в строке. Это приводит к следующему (обратите внимание только на одну обратную косую черту и без кавычек вокруг строки print ):

 >>> foo = r'baz "\"' >>> foo 'baz "\\"' >>> print foo baz "\" 

И давайте продолжим, потому что у вас больше трюков с обратной косой чертой. Если вы хотите иметь обратную косую черту в конце строки и использовать метод выше, вы столкнулись с проблемой:

 >>> foo = r'baz \' File "<stdin>", line 1 foo = r'baz \' ^ SyntaxError: EOL while scanning single-quoted string 

Необработанные строки не работают должным образом, когда вы это делаете. Вы должны использовать обычную строку и избегать обратных косых черт:

 >>> foo = 'baz \\' >>> print foo baz \ 

Однако, если вы работаете с именами файлов Windows, вы испытываете некоторую боль. То, что вы хотите сделать, это использовать косые черты и os.path.normpath() :

 myfile = os.path.normpath('c:/folder/subfolder/file.txt') open(myfile) 

Это позволит сэкономить много сил и волос. Эта страница была удобной, когда проходила мимо этого некоторое время назад.

Что сказал Харли, за исключением последнего пункта – на самом деле не нужно менять «/» на «» перед вызовом open. Windows очень рада принимать дорожки с помощью косых черт.

 infile = open('c:/folder/subfolder/file.txt') 

Единственный раз, когда вам, вероятно, понадобится нормальная строка, – это переход к другой программе через оболочку (с использованием os.system или модуля subprocess ).

Другой способ закончить строку с обратной косой чертой – это закончить строку с обратным слэшем, за которым следует пробел, а затем вызвать функцию .strip() в строке.

Я пытался конкатенировать две строковые переменные и разделять их на обратную косую черту, поэтому я использовал следующее:

 newString = string1 + "\ ".strip() + string2 
  • замена строки python, генерирование всех возможных комбинаций
  • Сделать сценарий в python, который перечисляет смежные слова через Unix?
  • Каков предпочтительный способ конкатенации строки в Python?
  • Разбор json и поиск по нему
  • Правильный отступ для многострочных строк Python
  • Форматировать строку динамически
  • передать специальный символ из командной строки
  • Как изменить один символ в строке в Python?
  •  
    Interesting Posts for Van-Lav

    Как собирать данные с нескольких страниц в единую структуру данных с помощью scrapy

    Может ли pip использовать существующие пакеты, а не загружать их снова?

    Невозможность переопределить результат str для объекта класса с помощью декоратора

    Пример str.isdecimal () и str.isdigit ()

    Обновить метку Tkinter из переменной

    Python: метод и дескрипторы __getattribute__

    Как получить журнал ошибок настройки disutils в Python?

    Лучший способ перетасовать два массива numpy в унисон

    сохранение настроек приложения в Google App Engine

    Pyspark Spark DataFrame – группировать и фильтровать столбцы в столбце типа карты

    Использование функции itertree python ElementTree и запись измененного дерева в выходной файл

    Создание графиков зависимостей в Python

    Python Tkinker – показывает jpg как метод класса, который не работает

    Как объединить два списка в последовательность столбцов в python?

    Splinter сохраняет бестелесный html

    Python - лучший язык программирования в мире.