Python如何动态将变量值插入字符串,实现动态替换或拼接
方案1:使用f-string(Python 3.6+ 首选,可读性最高)
直接定义字符串模板,将变量放在{}占位符中即可自动拼接:
start = 0 length = 100 s = f"blah blah start={start} length={length}"
如果是URL场景,参数较多时也能清晰维护,不需要手动拼接字符串。
方案2:使用str.format()(适配低版本Python,模板可提前存储)
如果模板是预先定义、动态读取的,可以用format方法传参:
# 模板可以提前配置、从其他位置读取 template = "blah blah start={start} length={length}" start = 0 length = 100 s = template.format(start=start, length=length)
如果参数较多,可以把所有参数存在字典里一次性解包传入:
params = {"start": 0, "length": 100, "other_param": "test"} template = "blah blah start={start} length={length} other={other_param}" s = template.format(**params)
方案3:正则匹配替换(适合直接修改已有字符串,无需调整模板)
如果不想修改原有字符串的结构,直接匹配替换对应参数值即可:
import re s = "blah blah start=0 length=10" start = 0 length = 100 s = re.sub(r'start=\d+', f'start={start}', s) s = re.sub(r'length=\d+', f'length={length}', s)
方案4:URL专用处理(生产环境推荐,避免编码错误)
如果s是标准URL,建议用官方库urllib.parse处理参数,适配各种特殊字符、多参数场景:
import urllib.parse start = 0 length = 100 s = "https://example.com/path?blah=blah&start=0&length=10" # 拆解URL parsed_url = urllib.parse.urlparse(s) # 提取查询参数转为字典 query_params = urllib.parse.parse_qs(parsed_url.query) # 修改参数值 query_params["start"] = [str(start)] query_params["length"] = [str(length)] # 重新拼接查询参数 new_query = urllib.parse.urlencode(query_params, doseq=True) # 生成新URL new_s = urllib.parse.urlunparse(parsed_url._replace(query=new_query))
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

