词法错误:遇到:"" (0),后面是:

3 投票
1 回答
28573 浏览
提问于 2025-04-16 20:25

我需要开始处理一些外文字符,但在这个过程中,我觉得我把一个文件的编码搞得一团糟。

我遇到的错误是:

Lexical error at line 1, column 8.  Encountered: "" (0), after :  ""

这个文件的第一行是:

import xml.etree.cElementTree as ET

还有一点需要注意的是:当我把上面那行复制到文本框里提问时,提交后每个字符之间都出现了一个看不见的字符(e)。

我尝试通过添加明确的编码定义来修复这个问题,但没有成功:

# -*- coding: utf-8 -*-

我也无法通过Hg把文件恢复到之前的版本,也不能把代码复制粘贴到新文件里,或者用复制粘贴的代码替换掉损坏的文件。

请帮帮我!

1 个回答

3

如果里面确实有一个零字符,你可能是插入了一些UTF-16/UCS-2格式的文本。这种特殊的Unicode编码在每个ASCII字符之间会有一个零字节。

要确认这一点,最好的办法是用类似于 od -xcb myfile.py 的命令对你的文件进行十六进制转储。

如果真是这样的话,你就需要用能看到这些字符的工具来编辑文件,并把它们修复好。

我个人推荐使用 vi(因为我比较习惯),但我不想引发什么争论,尤其是和Emacs的粉丝们。在 vi 中,这些零字符很可能会显示为 ^@ 字符。

撰写回答