python字符串替换%字符/**kwargs奇怪 [英] python string replacement with % character/**kwargs weirdness
本文介绍了python字符串替换%字符/**kwargs奇怪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码:
def __init__(self, url, **kwargs):
for key in kwargs.keys():
url = url.replace('%%s%' % key, str(kwargs[key]))
抛出以下异常:
File "/home/wells/py-mlb/lib/fetcher.py", line 25, in __init__
url = url.replace('%%s%' % key, str(kwargs[key]))
ValueError: incomplete format
字符串的格式如下:
http://www.blah.com?id=%PLAYER_ID%
我做错了什么?
推荐答案
您可能需要格式字符串 %%%s%%
而不是 %%s%
.
You probably want the format string %%%s%%
instead of %%s%
.
两个连续的 %
符号被解释为文字 %
,因此在您的版本中,您有文字 %
,文字 s
,然后是一个单独的 %
,它后面需要一个格式说明符.您需要将每个文字 %
加倍以不被解释为格式字符串,因此您需要 %%%s%%
:literal %
, %s
用于字符串,文字 %
.
Two consecutive %
signs are interpreted as a literal %
, so in your version, you have a literal %
, a literal s
, and then a lone %
, which is expecting a format specifier after it. You need to double up each literal %
to not be interpreted as a format string, so you want %%%s%%
: literal %
, %s
for string, literal %
.
这篇关于python字符串替换%字符/**kwargs奇怪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文