【问题标题】:short Unicode \N{} names for Latin-1 characters in Python?Python 中拉丁 1 字符的短 Unicode \N{} 名称?
【发布时间】:2009-12-26 13:15:59
【问题描述】:

Python 中是否有用于 Latin1 字符的短 Unicode u"\N{...}" 名称? \N{A umlaut} 等会很好,
\N{LATIN SMALL LETTER A WITH DIAERESIS} 等太长,每次都无法输入。
(已添加:)我使用英文键盘,但偶尔需要德文字母,例如“Löwenbräu Weißbier”。
是的,可以单独剪切粘贴它们,L cutpaste ö wenbr cutpaste ä ... 但这打破了流程;我希望只有键盘方式。

【问题讨论】:

  • 什么语言/正则表达式实现允许这样的表达?

标签: python unicode encoding utf-8


【解决方案1】:

对不起,不,没有这样的事情。无论如何,在字符串文字中......您也许可以搭载另一种编码方案,例如 HTML:

>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape(u'a ä b c')
u'a \xe4 b'

但我认为这不值得。

在任何情况下,几乎没有人使用\N 表示法...对于偶尔出现的字符,\xnn 表示法是可以接受的;对于更多涉及的使用,您最好直接输入ä,并确保在脚本中按照PEP263 定义了# coding=。 (如果您没有可以直接键入这些变音符号的键盘布局,请获得一个。例如,Windows 上的 eurokb,或 Linux 上的 Compose 键。)

【讨论】:

【解决方案2】:

如果您想做正确的事情,请在您的 python 源代码中使用 UTF-8。这将使代码更具可读性。

Python 能够处理真正的 UTF-8 源文件,你所要做的就是在第一行之后添加一个额外的行:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

顺便说一句,从 Python 3.0 开始,UTF-8 是默认编码,因此您将不再需要此行。见PEP3120

【讨论】:

  • 好的,但是(添加了澄清)我希望 \N{aumlaut} 或类似的东西,打字和清除速度也很快
【解决方案3】:

您可以在字符串中添加一个实际的“ä”字符。为此,您必须在顶部声明源代码的编码

#!/usr/bin/env python
# encoding: utf-8

x = u"ä" 

【讨论】:

    【解决方案4】:

    您是否考虑过编写自己的转换器?编写一些会遍历文件并将 \N{A umlaut} 替换为 \N{LATIN SMALL LETTER A WITH DIAERESIS} 的东西并不难。

    【讨论】:

      【解决方案5】:

      您可以使用 Unicode 符号 \uXXXX 来描述该字符:

      u"\u00E4"
      

      【讨论】:

        【解决方案6】:

        在 Windows 上,您可以使用 charmap.exe 实用程序查找常用字母的键盘快捷键,例如:

        ALT-0223 = ß
        ALT-0228 = ä
        ALT-0246 = ö
        

        然后使用 Unicode 并保存为 UTF-8:

        # -*- coding: UTF-8 -*-
        phrase = u'Löwenbräu Weißbier'
        

        或使用其他人提到的转换器并制作自己的快捷方式:

        # -*- coding: UTF-8 -*-
        
        def german(s):
            s = s.replace(u'SS',u'ß')
            s = s.replace(u'a:',u'ä')
            s = s.replace(u'o:',u'ö')
            return s
        
        phrase = german(u'Lo:wenbra:u WeiSSbier')
        print phrase
        

        【讨论】:

          猜你喜欢
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          • 2013-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-28
          相关资源
          最近更新 更多