当我将其粘贴到 vim 时,怎么会出现语法错误?

Posted

技术标签:

【中文标题】当我将其粘贴到 vim 时,怎么会出现语法错误?【英文标题】:How come when I paste this in vim, I get syntax errors? 【发布时间】:2011-07-10 20:46:54 【问题描述】:
def latlong_distance(origin, destination):
    lat1, lon1 = origin
    lat2, lon2 = destination
    radius = 6371
    dlat = math.radians(lat2-lat1)
    dlon = math.radians(lon2-lon1)    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
    d = radius * c
    return d * 1000

语法错误:文件 /tools.py 第 65 行中的非 ASCII 字符“\xc2”,但未声明编码;详情见http://www.python.org/peps/pep-0263.html

【问题讨论】:

您是否阅读了错误信息? 这和vim有什么关系? 这可能是间距问题(\xc2 是空格字符),尝试仅使用空格重新缩进,别无其他。您也可以将# -*- coding:utf-8 -*- 放在文件顶部,看看是否有帮助。 是的,没错,谢谢。 我会发布它作为答案然后我们可以解决这个问题:) 【参考方案1】:

我稍微修改了代码:

dlon = math.radians(lon2-lon1)    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)

应该像这样分成两行:

dlon = math.radians(lon2-lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)

我试过了,没有出现异常。你能把那个文件附在这里吗?

【讨论】:

【参考方案2】:

这可能是一个间距问题(\xc2 是一个空格字符),尝试只使用空格重新缩进,别无其他。您也可以将# -*- coding:utf-8 -*- 放在文件顶部,看看是否有帮助。

【讨论】:

以上是关于当我将其粘贴到 vim 时,怎么会出现语法错误?的主要内容,如果未能解决你的问题,请参考以下文章

JS异步/等待的CORS错误,但当我将URL直接粘贴到浏览器时没有[重复]

从剪贴板粘贴代码时,Vim 会放置很多制表符 [重复]

老男孩教育每日一题-2017年5月9日-vim命令粘贴带#号或注释信息格式会出现混乱情况怎么办

每当我将 Python 代码放入 Django 模板时都会出现语法错误

在 Mac OS X 上将代码粘贴到终端窗口中的 vim

JS async/await 的 CORS 错误,但当我将 URL 直接粘贴到浏览器中时没有 [重复]