python字符串替换%字符/**kwargs奇怪 [英] python string replacement with % character/**kwargs weirdness

查看:39
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆