格式化多行字符串时保留缩进级别

时间:2019-12-28 14:21:07

标签: python formatting

我正在使用Python生成Coffeescript。

我有一个如下的模板字符串:

format = {
    'start':        '''
                    getEvents = (aic) ->
                      events = {
                    ''',
    'event_start':  '''
                        {event_name}: {
                          precommand: (aic) ->
                            {precommands}
                          postcommand: (aic) ->
                            {postcommands}
                          lines: [
                    ''',
    'event_end':    '''
                          ]
                        }
                    ''',
    'end':          '''
                      }
                    '''
}

Python会非常有用地保留那些模板的缩进级别,以产生正确缩进的Coffeescript。但是,当我随后尝试用多行格式设置那些模板时:

precommands = ["aic.eggs = false", "if aic.ham then spam = true"]
format['event_start'].format(precommands="\n".join(precommands))

我显然得到了一些缩进不正确的东西:

'''
    {event_name}: {
      precommand: (aic) ->
        aic.eggs = false
if aic.ham then spam = true
      postcommand: (aic) ->
        {postcommands}
      lines: [
'''

如何获得格式化过程以保留缩进级别?

类似:Indentation preserving formatting of multiline strings

0 个答案:

没有答案