Python 3.5 中的注释给出 unicode 错误

问题描述 投票:0回答:2

我使用的是 Spyder IDE,Python 3.5,它是 anaconda 发行版的一部分。下面是代码的前几行:

# -*- coding: utf-8 -*-
"""
Created on Tue Sep 20 16:22:40 2016

@author: pavan
This program reads csv file from the given directory .
The input directory for this is : "C:\Users\pavan\Documents\Python Scripts\EOD from Yahoo"
The output file is "comprehensive_trend.xlsx"

"""
import pdb
import pandas as pd
from datetime import date, datetime, timedelta
import os, glob
# Delarations
full_path = os.path.realpath(__file__)
current_directory = os.path.dirname(full_path)
directory = current_directory + "\\EOD from Yahoo\\"
#directory = "C:\\Users\\pavan\Documents\\Python Scripts\\EOD from Yahoo\\"

我在 Python 2.7 上运行这段代码并且运行良好。最近我迁移到 Python 3.5,当我执行此代码时,我得到以下输出:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 145-146: truncated \UXXXXXXXX escape

在我绞尽脑汁之后,我从评论部分删除了这一行:

The input directory for this is : "C:\Users\pavan\Documents\Python Scripts\EOD from Yahoo"

现在程序可以正确运行了。

我的疑问:

  1. 为什么会出现这种情况?
  2. 在 Python 3.5 中编写注释以避免这些问题的最佳方法是什么 什么样的错误?
python syntax-error string-literals
2个回答
15
投票

我最近第一次使用“多行”注释时遇到了类似的问题,所以我做了一些研究。

Python 中的“多行”注释实际上并不存在。 就像,它们被视为字符串(因此它可以用作文档字符串)。事实上,它们被视为没有变量的字符串。这意味着解释器无法忽略代码中的“多行”注释,因此任何特殊字符都需要转义

\

现在知道它们被视为字符串,有两种方法可以保留您的评论。

  1. 将注释转换为单行注释。在许多 IDE 中,多行转换注释是可能的。 (VScode 中的

    Ctrl+K+C
    )。 这是PEP8推荐的

  2. 在多行注释块前面
  3. slap

    r
    ,表示后面的字符串中的所有字符都将被视为原始

来自您的代码

r"""
Created on Tue Sep 20 16:22:40 2016

@author: pavan
This program reads csv file from the given directory .
The input directory for this is : "C:\Users\pavan\Documents\Python Scripts\EOD from Yahoo"
The output file is "comprehensive_trend.xlsx"

"""

0
投票

您在注释中使用

\User
,并且
\U
被解释为无法解码的 unicode 文字。

使用

\\User
代替。

同样,

\u
应替换为
\\u

附注Python 支持多行字符串文字作为文档字符串,这里的用法非常好并且推荐。

© www.soinside.com 2019 - 2024. All rights reserved.