阅读「;生的;Python中的Unicode字符串

阅读「;生的;Python中的Unicode字符串,python,string,unicode,readability,Python,String,Unicode,Readability,我对Python很陌生,所以我的问题可能很傻,但即使通读了很多线程,我也没有找到问题的答案 我有一个混合源文档,其中包含html、xml、latex和其他文本格式,我尝试将其转换为仅latex的格式 因此,我使用python将不同的命令识别为常规表达式,并用适当的latex命令替换它们。到目前为止一切进展顺利 现在我只剩下一些“原始类型”Unicode符号,比如希腊字母。不幸的是,要用手来做这件事就太多了。因此,我也在寻找一种聪明的方法。Python有没有办法识别/读取它们?我如何告诉pytho

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

我有一个混合源文档,其中包含html、xml、latex和其他文本格式,我尝试将其转换为仅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不能做这项工作

非常感谢。
干杯,
Britta

您谈到了“原始”Unicode字符串。这是什么意思?Unicode本身不是一种编码,但是有不同的编码来存储Unicode字符(由Joel读取)

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

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

\usepackage[utf8]{inputenc}
(我从未尝试过这个,但我认为它应该可以工作。不过,您需要将
utf8
替换为
utf8x

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

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


如果所有其他操作都失败,请在编辑器中打开文档,您可以在其中设置编码(例如)。试试看,直到文字看起来正确为止。然后将此值用作Python中
codecs.open()
encoding
参数。

请首先阅读以下内容:


然后,回来问问题。

请举一个你所说的“原始类型Unicode符号”的例子。我相信世界上没有人用过或听过这个词。你说的“认识”是什么意思?Python非常能够处理unicode字符串,但是您没有解释您想对它们做什么,以及什么现在不起作用。问题是latex不喜欢unicode字符吗?如果是这样,可能会有所帮助。我所说的“原始”Unicode是指符号不是由代码表示的,而是在文本中可以找到符号本身,例如,在Word中插入<插入符号>。例如,“大写圆周率”的符号,很不幸没有正确编码为Π;(使用utf8(x)包装,可以很容易地在乳胶中显示)。如果我用latex中的符号打开文本,它根本就不会显示,信息也会丢失,因此我需要处理它。但是我要看一看关于编解码器模块的其他提示。。。谢谢:)在这种情况下,您需要确定输入文档的编码。如果文档是XML,则应位于第一行(默认为encoding=“…”;“utf-8”)。对于HTML,请查找“字符集”。