【问题标题】:Why does printing html code as a string give hexadecimal numbers as output in python?为什么将 html 代码打印为字符串会在 python 中输出十六进制数字?
【发布时间】:2023-04-05 00:05:01
【问题描述】:

我编写了一个 Python 代码来修改我的 html 内容。但是在再次将其写入 html 文件时,我得到了奇怪的十六进制数字

import re

search="www.abc.com"

description="blah blah"

f = open('myhtml.html','r+')
content = f.read()
exp_keyword = re.compile(r'\.(\S+)\.')
reducedSearch = exp_keyword.findall(search)[0]

regexLink = re.compile(reducedSearch+r'\.'+r'.+'+'</a>',re.DOTALL)
matchregexLink = regexLink.search(content)
endOfMatch = matchregexLink.span()[1]   

#slice the string
s1 = content[:endOfMatch]
s2=content[endOfMatch:]

content = s1+description+s2
print(content)
f.truncate(0)
f.write(content)

<html>
 <head>
 </head>
 <body>
  <div id="phy">
   <p>
    ett
   </p>
   <div class="links">
    <ul>
     <a href="www.abcd.com">
      Link
     </a>
     <a href="www.abc.com">
      Link
     </a>
    </ul>
   </div>
  </div>
 </body>
</html>
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 003c 6874 6d6c 3e0a
203c 6865 6164 3e0a 203c 2f68 6561 643e
0a20 3c62 6f64 793e 0a20 203c 6469 7620
6964 3d22 7068 7922 3e0a 2020 203c 703e
0a20 2020 2065 7474 0a20 2020 3c2f 703e
0a20 2020 3c64 6976 2063 6c61 7373 3d22
6c69 6e6b 7322 3e0a 2020 2020 3c75 6c3e
0a20 2020 2020 3c61 2068 7265 663d 2277
7777 2e61 6263 642e 636f 6d22 3e0a 2020
2020 2020 4c69 6e6b 0a20 2020 2020 3c2f
613e 0a20 2020 2020 3c61 2068 7265 663d
2277 7777 2e61 6263 2e63 6f6d 223e 0a20
2020 2020 204c 696e 6b0a 2020 2020 203c
2f61 3e62 6c61 6820 626c 6168 0a20 2020
203c 2f75 6c3e 0a20 2020 3c2f 6469 763e
0a20 203c 2f64 6976 3e0a 203c 2f62 6f64
793e 0a3c 2f68 746d 6c3e 0a

这些奇怪的十六进制数字是我得到的输出。但是,当我在代码中打印 content 时,它给出了正确的答案。为什么这样?
我的预期答案是 blah blah 写在包含 www.abc.com 链接的结束 &lt;/a&gt; 标记之后。

【问题讨论】:

  • 顺便说一句,您似乎混合了多种命名约定。保持简单,只使用lower_case_with_underscores 样式的变量和函数名称。

标签:
python
html
regex