ValueError: unsupported format character 'w' (0x77) at index 650
ValueError: unsupported format character 'w' (0x77) at index 650
这是我在 Whosebug 中的第一个 post,希望我的问题得到解答。
我试图在 html 页面上打印从 python 代码发送的字符串,但是当我 return 在 html 页面上打印字符串时,它显示了这个错误:“ ValueError:索引 650 处不支持的格式字符 'w' (0x77)”。
这是 python 代码:
def doctor_post(self, name, userID, password, telegramID):
resp=open("response.html").read()
new = {
"name": name,
"userID": userID,
"password": password,
"telegramID": telegramID,
"patientsList": []
}
r = requests.post(self.Catalog+"/doctor", json=new)
if r.status_code==200:
out=resp % "Registered"
return out
而 html:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Response</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p> </p>
<p> </p>
<h1 style="text-align: center;"> Response</h1>
<p> </p>
<p> </p>
<!--The string specified in the python script after % will go instead of %s-->
<h3 style="text-align: center;">%s</h3>
<p> </p>
<p> </p>
<p style="text-align: center;"><input type="button" onclick="document.location.href='/';" value="Homepage"><br></p>
</body>
</html>
就我个人而言,我宁愿使用“替换”:
- 在 html 中,而不是
%s
我会使用 ___RESPONSE_VALUE___
- 在python代码中
out = resp.replace("___RESPONSE_VALUE___", "Registered")
对于更复杂的项目,我建议你检查 Jinja2 库,它非常适合模板化
这里的问题是您的 html 文件中有一个 % w
。
python 中的“%”运算符搜索字符串中的所有 %
字符,并根据下一个字符进行一些替换。
要将“%s”保留为占位符值,请将所有文字 %
替换为 %%
。
如其他人所述,最好使用“%s”以外的其他内容作为占位符,例如 ___RESPONSE_VALUE___
、{{ RESPONSE_VALUE }}
或使用模板系统,例如 jinja
.
PS:Python还有比"%"更高级的str.format
功能:
print("Hello {} !".format("You"))
这是我在 Whosebug 中的第一个 post,希望我的问题得到解答。 我试图在 html 页面上打印从 python 代码发送的字符串,但是当我 return 在 html 页面上打印字符串时,它显示了这个错误:“ ValueError:索引 650 处不支持的格式字符 'w' (0x77)”。 这是 python 代码:
def doctor_post(self, name, userID, password, telegramID):
resp=open("response.html").read()
new = {
"name": name,
"userID": userID,
"password": password,
"telegramID": telegramID,
"patientsList": []
}
r = requests.post(self.Catalog+"/doctor", json=new)
if r.status_code==200:
out=resp % "Registered"
return out
而 html:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Response</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p> </p>
<p> </p>
<h1 style="text-align: center;"> Response</h1>
<p> </p>
<p> </p>
<!--The string specified in the python script after % will go instead of %s-->
<h3 style="text-align: center;">%s</h3>
<p> </p>
<p> </p>
<p style="text-align: center;"><input type="button" onclick="document.location.href='/';" value="Homepage"><br></p>
</body>
</html>
就我个人而言,我宁愿使用“替换”:
- 在 html 中,而不是
%s
我会使用___RESPONSE_VALUE___
- 在python代码中
out = resp.replace("___RESPONSE_VALUE___", "Registered")
对于更复杂的项目,我建议你检查 Jinja2 库,它非常适合模板化
这里的问题是您的 html 文件中有一个 % w
。
python 中的“%”运算符搜索字符串中的所有 %
字符,并根据下一个字符进行一些替换。
要将“%s”保留为占位符值,请将所有文字 %
替换为 %%
。
如其他人所述,最好使用“%s”以外的其他内容作为占位符,例如 ___RESPONSE_VALUE___
、{{ RESPONSE_VALUE }}
或使用模板系统,例如 jinja
.
PS:Python还有比"%"更高级的str.format
功能:
print("Hello {} !".format("You"))