0

我有一个像下面这样的长字符串,我试图格式化 aswel 使其与 PEP 标准保持一致

'http://abc/api/run=1&'+ \
            'actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"},{"query":"hotels-{1}-{3}-{4}-1-1_0-"},{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}]'+ \
            '&tripOrigin={0}&tripDestination={1}'.format(origin.get('vcid'), destination.get('vcid'), onward_f_date, check_in_date, check_out_date, return_f_date)

但是遇到这样的输出

'http://abc/api/run=1&actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"},{"query":"hotels-{1}-{3}-{4}-1-1_0-"},{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}]&tripOrigin=2311443&tripDestination=123445667'

期望格式化发生在所有 {0}、{1}、{2}、{3}、{4} 和 {5}

4

4 回答 4

1

不要使用连接:使用括号内的隐式连接。

my_string = (
    'http://abc/api/run=1&'
    'actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"},{"query":"hotels-{1}-{3}-{4}-1-1_0-"},{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}]'
    '&tripOrigin={0}&tripDestination={1}'.format(origin.get('vcid'), destination.get('vcid'), onward_f_date, check_in_date, check_out_date, return_f_date)
)
于 2016-02-04T11:15:53.620 回答
1

您需要转义与格式化占位符不对应的花括号。

例如:这个

'actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"}

应该看起来像:

'actionData=[{{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"}}

所以:

>>> print 'http://abc/api/run=1&actionData=[{{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"}},{{"query":"hotels-{1}-{3}-{4}-1-1_0-"}},{{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}}]&
tripOrigin={0}&tripDestination={1}'.format(999,999,999,999,999,999)

http://abc/api/run=1&actionData=[{"query":"air-999-999-999--1-0-0-E-111--"},{"query":"hotels-999-999-999-1-1_0-"},{"query":"air-999-999-999--1-0-0-E-111--"}]&tripOrigin=999&tripDestination=999
于 2016-02-04T11:21:24.053 回答
1
my_string = (
    'http://abc/api/run=1&'
    'actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"},'
    '{"query":"hotels-{1}-{3}-{4}-1-1_0-"},'
    '{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}]'
    '&tripOrigin={0}&tripDestination={1}'
).format(origin.get('vcid'), destination.get('vcid'),
         onward_f_date, check_in_date, check_out_date, return_f_date)
于 2016-02-04T11:22:33.460 回答
1

用括号括住你的字符串,你也不再需要 + 和 \ 了:

('http://abc/api/run=1&'
 'actionData=[{"query":"air-{0}-{1}-{2}--1-0-0-E-111--"},{"query":"hotels-{1}-{3}-{4}-1-1_0-"},{"query":"air-{1}-{0}-{5}--1-0-0-E-111--"}]'
 '&tripOrigin={0}&tripDestination={1}').format(origin.get('vcid'), destination.get('vcid'), onward_f_date, check_in_date, check_out_date, return_f_date)
于 2016-02-04T11:17:47.060 回答