我对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无法完成这项工作......
非常感谢提前
干杯,
布丽塔
答案 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}}参数。