在Python中读取“原始”Unicode字符串

时间:2009-05-26 09:54:23

标签: python string unicode readability

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

我有一个混合源文档,其中包含html,xml,latex和其他textformats,我尝试使用仅限乳胶的格式。

因此,我使用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无法完成这项工作......

非常感谢提前 干杯,
布丽塔

3 个答案:

答案 0 :(得分:3)

你谈到的是``raw''Unicode字符串。那是什么意思? Unicode本身不是一种编码,但存储Unicode字符有不同的编码(Joel读this post)。

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

编辑:或者,为什么不让那些可怜的角色出现,并在顶部指定LaTeX文件的编码:

\usepackage[utf8]{inputenc}

(我从未尝试过这个,但我觉得它应该有效。你may需要utf8取代utf8x,但是)

答案 1 :(得分:1)

答案 2 :(得分:0)

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

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

如果所有其他方法都失败,请在编辑器中打开文档,您可以在其中设置编码(例如jEdit)。尝试它们直到文本看起来正确。然后将此值用作Python中encoding的{​​{1}}参数。