can';t让我的python脚本替换\u代码

can';t让我的python脚本替换\u代码,python,unicode-escapes,Python,Unicode Escapes,我正在处理来自一个网站的本地目录中的HTML文件,在Windows10上用记事本++进行开发。这些文件声称是“utf-8”,但其中包含大量脚本代码。写入文件时,我可以获取\u######代码和\x##代码和垃圾字符,但不能获取完整的人类代码。大多数\u2019代码没有被转换,但其他一些代码也被忽略了 with open(self.srcFilename, 'r', encoding='utf8') as f: self.rawContent = f.read()

我正在处理来自一个网站的本地目录中的HTML文件,在Windows10上用记事本++进行开发。这些文件声称是“utf-8”,但其中包含大量脚本代码。写入文件时,我可以获取\u######代码和\x##代码和垃圾字符,但不能获取完整的人类代码。大多数\u2019代码没有被转换,但其他一些代码也被忽略了

with open(self.srcFilename, 'r', encoding='utf8') as f:
        self.rawContent = f.read()
        f.close()                    
soup = BeautifulSoup(self.rawContent, 'lxml')
:::: <<<=== other tag processing code
for section in soup.find('article'):
            nextNode = section           
            if soup.find('article').find('p'):
                ::: <<<=== code to walk through tags
                if tag_name == "p":
                    storytags.append(nextNode.text)                        
                ::: <<<=== conditions to end loop        
i=1
for line in storytags:
    print("[line %d] %s" % (i, line))
    logger.write("[line %d] %s\n" % (i, line))
    i+=1
setattr(self, 'chapterContent', storytags)    
因此,文件读取使用的是
utf-8
编码。如果我进行控制台打印,则从上面的部分可以清晰地打印(?)。然而,写入文件会给我垃圾字符,比如
它们™他们有
而不是,并且让我们™s而不是
“让我们

经过大量阅读,我最接近于获得人类可读的输出的方法是更改我的write()语句,但我仍然留下了一些零散的代码

(1) logger.write("[line %d] %s\n" % (i, line.encode('unicode_escape').decode()))
(2) logger.write("[line %d] %s\n" % (i, line.encode().decode('utf-8)))
第一条语句为我提供文本,但也提供\u########代码和一些\xa0代码。第二条语句生成一个HTML文件,其中包含我可以在HTML浏览器中读取的文本,但Calibre epub builder仍然无法正确解释
\u2019
。我尝试使用该语句,但无法识别\u代码

是否有一个可能的解决方案,或者是否有一些关于如何更好地处理我的问题的建议


编辑:忘了添加,我正在用open('log.txt','w+')写信给
。我以前使用的是
encoding='utf-8'
,但这似乎让事情变得更糟。

一周的搜索,最后在这里发布后找到了答案。顺便说一句,我正在使用Python 3.6,因此它与Python版本无关

with open(output, 'w+') as out:
    ::: <<<=== code
    line = line.encode('utf-8').decode('ascii','ignore')`
    out.write(line)
打开(输出“w+”)作为输出的

::鉴于上述描述,不确定是否有人能为您提供帮助。如果您正在处理声称具有“utf-8”编码但可能没有的文件,那么您需要弄清楚如何处理它(更正源文件,以某种方式处理无效编码…等等)。但是如果没有访问文件的权限,任何人都很难推荐解决方案。我们希望获得一些关于使用
line
进行编码/解码的建议,以帮助调试。类似于
对于c-in-line:print(“%s,ord(%d)”%)(c,ord(c))
带有一些更可能的编码/解码变体。我充其量只是一个不常使用的程序员,对python还不熟悉。另一篇关于编码问题的调试有用文章。
with open(output, 'w+') as out:
    ::: <<<=== code
    line = line.encode('utf-8').decode('ascii','ignore')`
    out.write(line)