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

x = " \{ Hello \} {0} " print x.format(42) 

дает мне: Key Error: Hello\\

Я хочу напечатать вывод: {Hello} 42

  • Строки объединены в Python
  • Разбор строки, представляющей список кортежей
  • Элементарная конкатенация строк в numpy
  • Игнорировать str.format (** foo), если ключ не существует в foo
  • Примеры поиска строк в Python
  • pyPdf игнорирует новые строки в файле PDF
  • Заменить строку в содержимом файла
  • Pandas - добавьте ведущие «0» к строковым значениям, чтобы все значения были равны len
  • 10 Solutions collect form web for “Как я могу печатать литеральные фигуры в фигурных скобках в строке python, а также использовать .format на нем?”

    Вам нужно удвоить {{ и }} :

     >>> x = " {{ Hello }} {0} " >>> print x.format(42) ' { Hello } 42 ' 

    Вот соответствующая часть документации Python для синтаксиса строки форматирования :

    Строки формата содержат «поля замены», окруженные фигурными фигурными скобками {} . Все, что не содержится в фигурных скобках, считается буквальным текстом, который не изменяется на выходе. Если вам нужно включить символ скобки в литеральный текст, его можно избежать путем удвоения: {{ и }} .

    Вы избегаете этого, удваивая фигурные скобки.

    Например:

     x = "{{ Hello }} {0}" print x.format(42) 

    Попробуйте сделать это:

     x = " {{ Hello }} {0} " print x.format(42) 

    Попробуй это:

    x = "{{ Hello }} {0}"

    OP написал этот комментарий:

     I was trying to format a small JSON for some purposes, like this: '{"all": false, "selected": "{}"}'.format(data) to get something like {"all": false, "selected": "1,2"} 

    Весьма распространено, что проблема «сбегающих брекетов» возникает при работе с JSON.

    Я предлагаю сделать это:

     import json data = "1,2" mydict = {"all": "false", "selected": data} json.dumps(mydict) 

    Это чище, чем альтернатива, а именно:

     '{{"all": false, "selected": "{}"}}'.format(data) 

    Использование библиотеки json безусловно, предпочтительнее, когда строка JSON становится более сложной, чем пример.

    Хотя и не лучше, просто для справки, вы также можете это сделать:

     >>> x = '{}Hello{} {}' >>> print x.format('{','}',42) {Hello} 42 

    Это может быть полезно, например, когда кто-то хочет напечатать {argument} . Возможно, это более читаемо, чем '{{{}}}'.format('argument')

    Обратите внимание, что вы опускаете позиции аргументов (например {} вместо {0} ) после Python 2.7

    Если вы собираетесь делать это много, может быть полезно определить функцию утилиты, которая позволит вам вместо этого использовать произвольные заменители скобок, например

     def custom_format(string, brackets, *args, **kwargs): if len(brackets) != 2: raise ValueError('Expected two brackets. Got {}.'.format(len(brackets))) padded = string.replace('{', '{{').replace('}', '}}') substituted = padded.replace(brackets[0], '{').replace(brackets[1], '}') formatted = substituted.format(*args, **kwargs) return formatted >>> custom_format('{{[cmd]} process 1}', brackets='[]', cmd='firefox.exe') '{{firefox.exe} process 1}' 

    Обратите внимание, что это будет работать либо с скобками, являющимися строкой длины 2, либо итерируемой из двух строк (для многосимвольных разделителей).

    Причина в том, что {} является синтаксисом .format() поэтому в вашем случае .format() не распознает {Hello} поэтому он .format() ошибку.

    вы можете переопределить его, используя двойные фигурные скобки {{}},

     x = " {{ Hello }} {0} " 

    или

    попробуйте %s для форматирования текста,

     x = " { Hello } %s" print x%(42) 

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

     >>> "{o}Hello {a}{c}".format(**{"o":"{","c":"}","a":42}) '{Hello 42}' 

    Лучшим решением для меня является использование этого '{ob} Hello {cb} 42'.format(ob='{',cb='}')

    Причина, почему, потому что удача с помощью принятого ответа напечатать что-то вроде ниже.

     a='Header' ob = '{' cb = '}' str = """ import {a} from '../actions/{a}'; class {a} {ob} constructor() {ob} {cb} somefuncSuccess(){ob} if(true){ob}{cb} {cb} {cb} """ str = str.format(a=a,ob=ob, cb=cb) print(str) 

    Вывод:

     import Header from '../actions/Header'; class Header { constructor() { } somefuncSuccess(){ if(true){} } } 
    Interesting Posts
    Python - лучший язык программирования в мире.