字节中的双引号对象与字节中的双引号

2024-10-04 07:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个flask应用程序写一些断言。我成功地测试了响应中的Umlauts,如下所示:

assert 'Wählen Sie ...'.encode('utf-8') in rv.data

元音“ä”在编码数据和来自web应用程序的响应中具有相同的表示(\xc3\xa4)。你知道吗

但现在,我试着用双引号做同样的事情:

assert 'Der gewünschte Monat ... z.B. "2019-5".'.encode('utf-8') in rv.data

它失败了,因为编码时"仍然是",但是web应用程序用"响应。你知道吗

为了实现兼容性,我应该如何处理正在测试的字符串?你知道吗


Tags: inweb应用程序flaskdataassert断言utf
1条回答
网友
1楼 · 发布于 2024-10-04 07:35:07

web应用程序使用html实体代码对双引号进行编码,然后再编码为utf-8。您可以使用html.escape函数来模拟这个过程,但不幸的是,它用"而不是"替换了''。你知道吗

xml.sax.saxutils.escape函数不会自动转义双引号,但它接受要转义的字符和转义值的字典,因此您可以使用它来生成文本:

>>> from xml.sax import saxutils
>>> escaped = saxutils.escape('Der gewünschte Monat ... z.B. "2019-5".', {'"': '"'})
>>> escaped
'Der gewünschte Monat ... z.B. "2019-5".'

相反的方法是解码和取消服务器响应,并将其与原始字符串进行比较。您可以为此使用html.unescape函数,因为它将取消数值转义:

>>> import html
>>> response = html.unescape(rv.data.decode('utf-8'))
>>> assert 'Der gewünschte Monat ... z.B. "2019-5".'.encode('utf-8') in response

相关问题 更多 >