2

我对 Python 很陌生,所以我的问题可能很愚蠢,但即使阅读了很多线程,我也没有找到问题的答案。

我有一个混合源文档,其中包含 html、xml、latex 和其他文本格式,并且我尝试将其转换为纯乳胶格式。

因此,我使用 python 将不同的命令识别为正则表达式,并用适当的 latex 命令替换它们。到目前为止,一切都很好。

现在我留下了一些“原始类型”的 Unicode 符号,例如希腊字母。不幸的是,手工完成的工作太多了。因此,我也在寻找一种聪明的方法来做到这一点。Python有没有办法识别/读取它们?我如何告诉 python 识别/读取例如 Pi 写成希腊字母?

我使用的代码的一个最小示例是:

fh = open('SOURCE_DOCUMENT','r')
stuff = fh.read()
fh.close()

new_stuff = re.sub('READ','REPLACE',stuff)
fh = open('LATEX_DOCUMENT','w')
fh.write(new_stuff)
fh.close()

我不确定这是否是重要信息,但我使用的是在 Windows 上运行的 Python 2.6。

如果有人可以给我提示,我会非常高兴,至少在哪里可以找到相关信息或这可能如何工作。或者我是否完全错了,Python无法完成这项工作......

提前谢谢了。
干杯,
布丽塔

4

3 回答 3

4

您谈到“原始”Unicode 字符串。这意味着什么?Unicode 本身不是一种编码,但是有不同的编码来存储 Unicode 字符(阅读Joel 的这篇文章)。

Python 3.0 中的open函数采用一个可选encoding参数,可让您指定编码,例如 UTF-8(一种非常常见的 Unicode 编码方式)。在 Python 2.x 中,查看codecs模块,它还提供了一个开放函数,允许指定文件的编码。

编辑:或者,为什么不让那些糟糕的字符存在,并在顶部指定 LaTeX 文件的编码:

\usepackage[utf8]{inputenc}

(我从未尝试过,但我认为它应该可以工作。不过,您可能需要替换utf8utf8x

于 2009-05-26T10:09:09.230 回答
1

请首先阅读以下内容:

每个软件开发人员绝对、绝对必须了解 Unicode 和字符集的绝对最低要求(没有借口!)

然后,回来问问题。

于 2009-05-26T10:42:40.347 回答
0

您需要确定输入文档的“编码”。Unicode 可以编码数百万个字符,但文件只能包含 8 位值 (0-255)。因此,Unicode 文本必须以某种方式进行编码。

如果文档是 XML,它应该在第一行(encoding="...";如果没有 "encoding" 字段,则 "utf-8" 是默认值)。对于 HTML,请查找“字符集”。

如果一切都失败了,请在编辑器中打开文档,您可以在其中设置编码(例如jEdit)。尝试它们,直到文本看起来正确。然后将此值用作Python中的encoding参数。codecs.open()

于 2009-05-26T10:39:30.430 回答