读取请求中的特殊字符时出现问题 python。各种不成功的尝试
Problems reading special characters in requests python. All kinds of unsuccessful attempts
我试图在堆栈中找到类似的问题,但我还没有找到解决问题的方法。
我在 python
中有以下代码
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
'Accept': '*/*',
'Accept-Language': 'pt-BR,pt;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive',
}
response = requests.request("POST", URL_ENDPOINT, headers=headers, data=payload_novo)
print(response.text)
输出为:
{"output": "\n <h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>\n <p></p>\n <p>Os dados informados (nome, data de nascimento ou filia\u00e7\u00e3o) n\u00e3o conferem com aqueles constantes do Cadastro Eleitoral.</p>\n <p></p>\n <button type=\"button\" \n class=\"btn btn-amarelo\" \n
onclick=\"exibirConsultaLocalVotacao()\">\n Nova consulta\n </button>\n </p>\n ", "type": "success"}
看到他带着"\ u00e7 \ u00e3o"
这样的人物回来了。我试过各种方法通过解码解码,但结果总是一样
但是,如果我创建一个新的python文件并将这个return放在一个变量中并打印出来,结果将毫无问题地显示出来,也就是说,特殊字符可以工作
myString= '''{"output": "\n <h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>\n <p></p>\n <p>Os dados informados (nome, data de nascimento ou filia\u00e7\u00e3o) n\u00e3o conferem com aqueles constantes do Cadastro Eleitoral.</p>\n <p></p>\n <button type=\"button\" \n class=\"btn btn-amarelo\" \n
onclick=\"exibirConsultaLocalVotacao()\">\n Nova consulta\n </button>\n </p>\n ", "type": "success"}'''
print(myString)
正确的输出是:
{"output": "
<h3 class="titulo-servico">Local de votação</h3>
<p></p>
<p>Os dados informados (nome, data de nascimento ou filiação) não conferem com aqueles constantes do Cadastro Eleitoral.</p>
<p></p>
<button type="button"
class="btn btn-amarelo"
onclick="exibirConsultaLocalVotacao()">
Nova consulta
</button>
</p>
", "type": "success"}
注意:
退出 1 段:
<h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>
出口 2 路段:
<h3 class="titulo-servico">Local de votação</h3>
这可能是以下两个问题之一:
您正在打印的响应实际上是一个 JSON 负载。在这种情况下,正确的解码方式不是通过 text
而是 json()
:
print(response.json())
或更具体地说
print(response.json()["output"])
第二个可能出错的地方是请求的自动字符集编码检测。
您可以通过打印响应的 encoding
字段来验证它是否正确检测到 utf-8:
print(response.encoding)
如果是意外情况,您可以在使用 text
或 json
字段之前明确设置它:
response.encoding = 'utf-8'
我试图在堆栈中找到类似的问题,但我还没有找到解决问题的方法。 我在 python
中有以下代码 headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
'Accept': '*/*',
'Accept-Language': 'pt-BR,pt;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive',
}
response = requests.request("POST", URL_ENDPOINT, headers=headers, data=payload_novo)
print(response.text)
输出为:
{"output": "\n <h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>\n <p></p>\n <p>Os dados informados (nome, data de nascimento ou filia\u00e7\u00e3o) n\u00e3o conferem com aqueles constantes do Cadastro Eleitoral.</p>\n <p></p>\n <button type=\"button\" \n class=\"btn btn-amarelo\" \n
onclick=\"exibirConsultaLocalVotacao()\">\n Nova consulta\n </button>\n </p>\n ", "type": "success"}
看到他带着"\ u00e7 \ u00e3o"
这样的人物回来了。我试过各种方法通过解码解码,但结果总是一样
但是,如果我创建一个新的python文件并将这个return放在一个变量中并打印出来,结果将毫无问题地显示出来,也就是说,特殊字符可以工作
myString= '''{"output": "\n <h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>\n <p></p>\n <p>Os dados informados (nome, data de nascimento ou filia\u00e7\u00e3o) n\u00e3o conferem com aqueles constantes do Cadastro Eleitoral.</p>\n <p></p>\n <button type=\"button\" \n class=\"btn btn-amarelo\" \n
onclick=\"exibirConsultaLocalVotacao()\">\n Nova consulta\n </button>\n </p>\n ", "type": "success"}'''
print(myString)
正确的输出是:
{"output": "
<h3 class="titulo-servico">Local de votação</h3>
<p></p>
<p>Os dados informados (nome, data de nascimento ou filiação) não conferem com aqueles constantes do Cadastro Eleitoral.</p>
<p></p>
<button type="button"
class="btn btn-amarelo"
onclick="exibirConsultaLocalVotacao()">
Nova consulta
</button>
</p>
", "type": "success"}
注意: 退出 1 段:
<h3 class=\"titulo-servico\">Local de vota\u00e7\u00e3o</h3>
出口 2 路段:
<h3 class="titulo-servico">Local de votação</h3>
这可能是以下两个问题之一:
您正在打印的响应实际上是一个 JSON 负载。在这种情况下,正确的解码方式不是通过
text
而是json()
:print(response.json())
或更具体地说
print(response.json()["output"])
第二个可能出错的地方是请求的自动字符集编码检测。
您可以通过打印响应的
encoding
字段来验证它是否正确检测到 utf-8:print(response.encoding)
如果是意外情况,您可以在使用
text
或json
字段之前明确设置它:response.encoding = 'utf-8'