如何在没有双反斜杠的情况下从文本文件中读取字节对象?

时间:2018-06-12 11:37:38

标签: python python-3.x

我试图从文本文件中读取一个字节对象,但每当我从文本文件中读取时,我在bytes对象中得到双反斜杠,我无法找到如何将它们恢复为单个反斜杠。该文件以open(file, 'rb')打开。我尝试过使用编码和解码,我也尝试过使用其他答案中详述的eval(str(my_string).replace('\\\\','\\')),但所有人都返回了错误:SyntaxError: (value error) invalid \x escape at position 372。我想读的字符串是:\xde\xcct\x18\xe5*\x91\xcc\xf1\xb4\xe9\xc2\x97BhR\x87\xd6x\xd8\x83\x8b\xc2\x08

编辑:

Reading utf-8 escape sequences from a file中详述的答案和其他问题没有帮助,因为在尝试这些方法时我仍然遇到unicode转义错误。

1 个答案:

答案 0 :(得分:0)

如果你的字符串来自带有反斜杠转义的字符的文件,则反斜杠会自行正确地重新连接,然后你可以看到单反斜杠为双反斜杠。你当然想要的是翻译转义的字符。您可以将编解码器模块与unicode_escape一起使用:

    <div class="footer" style="position:absolute;bottom:-1115px">

                    <div class="text-center" style="border-top: 1px solid black;">

                        <small>
                            <ul t-if="not company.custom_footer" class="list-inline">
                                <li t-if="company.phone">Phone:
                                    <span t-field="company.phone"/>
                                </li>


                                <li t-if="company.fax and company.phone">&amp;bull;</li>

                                <li t-if="company.fax">Fax:
                                    <span t-field="company.fax"/>
                                </li>


                                <li t-if="company.email and company.fax or company.email and company.phone">
                                    &amp;bull;
                                </li>


                                <t t-if="company.vat">TVA:
                                    <span t-field="company.vat"/>
                                </t>


                                <li t-if="company.company_registry">RC:
                                    <span t-field="company.company_registry"/>
                                </li>


                            </ul>
                        </small>


                        <small>
                            <ul class="list-inline">
                                <t t-set="nbr_page" t-value="1"/>
                                <li>Page:</li>
                                <t t-set="compteur" t-value="nbr_page+1"/>
                                <li>
                                    <span class="page"/>
                                    <t t-esc="nbr_page"/>
                                </li>
                                /
                                <t t-esc="nbr_page"/>
                                <li>
                                    <span class="topage"/>
                                </li>
                            </ul>
                        </small>

                        <t t-set="nbr_page" t-value="1"/>
                        <t t-set="compteur" t-value="nbr_page+1"/>

                    </div>
                </div>

如果您遇到错误,您可以通过“unicode_escape”编码参数打开文件来判断会发生什么。

with codecs.open("<yourfile>", 'r', encoding="unicode_escape") as fr:
    print(fr.read())

您可以在此处查看错误处理程序的完整列表:https://docs.python.org/3/library/codecs.html#error-handlers