【问题标题】:Reading "raw" Unicode-strings in Python在 Python 中读取“原始”Unicode 字符串
【发布时间】:2009-05-26 09:54:22
【问题描述】:

我对 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 无法完成这项工作......

非常感谢。
干杯,
布丽塔

【问题讨论】:

  • 请举例说明您所说的“原始类型 Unicode 符号”。我敢肯定,世界上没有人用过或听过这个词。
  • “识别”是什么意思? Python 非常有能力处理 unicode 字符串,但你没有解释你想用它们做什么,以及目前什么不起作用。
  • 是latex不喜欢Unicode字符的问题吗?如果是这样,this question 可能会有所帮助。

标签: python string unicode readability


【解决方案1】:

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

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

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

\usepackage[utf8]{inputenc}

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

【讨论】:

  • 我所说的“原始”Unicode 是指符号不是由代码表示,而是符号本身可以在文本中找到,例如在上方插入Word。一个例子是“大写 pi”的符号,不幸的是,它没有正确编码为 Π (可以使用 utf8(x) 包在 LaTeX 中轻松显示)。如果我打开带有乳胶符号的文本,它根本不显示,并且信息丢失,因此我需要照顾它。但我要看看有关编解码器模块的其他提示......谢谢:)
  • 这种情况下,需要确定输入文档的编码。如果文档是 XML,它应该在第一行(encoding="..."; "utf-8" 是默认值)。对于 HTML,请查找“字符集”。
【解决方案2】:
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 2011-09-24
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多