2016-02-04 27 views
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}

回答

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 
+0

谢谢Juras乌尔斯河。逃脱花括号使这个诀窍:) –

+0

你非常欢迎 – jurasource

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) 
) 
+0

喜@Daniel:此错误KeyError异常结束了:“”查询“' –

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) 
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)