在Python中,f-string的表达式嵌套深度过深可能会导致报错。这是因为在Python中,f-string的表达式需要被解析为Python代码,而解析的深度是有限制的。当表达式的嵌套深度超过这个限制时,就会报错。
解决这个问题的一种方法是使用其他字符串格式化方法,例如format()
函数或者%
运算符。这些方法没有表达式的嵌套深度限制。
例如,你可以将上面的代码修改为:
tmp = "黄昏"
s1 = "{}".format(f"music.search.SearchCgiService: {'{"method": "DoSearchForQQMusicDesktop","module": "music.search.SearchCgiService","param": {"'" + 'num_per_page': 40,' + 'page_num': 1,' + 'query': {tmp},' + 'search_type': 0}}'")
或者
tmp = "黄昏"
s1 = "%s" % (f"music.search.SearchCgiService: {'{"method": "DoSearchForQQMusicDesktop","module": "music.search.SearchCgiService","param": {"'" + 'num_per_page': 40,' + 'page_num': 1,' + 'query': {tmp},' + 'search_type': 0}}'")
注意:在上述代码中,我使用了{}
和%s
作为占位符,然后通过format()
函数或%
运算符将表达式插入到字符串中。这种方法没有表达式的嵌套深度限制,可以处理任意深度的嵌套。
问题在于format匹配
{}
,而你的字符串中本身也含有{ }
就会导致匹配出现问题。这样用吧