Python中用于Latin-1字符的短Unicode \N{}名称是什么?

4
在Python中,是否有适用于Latin1字符的Unicode u"\N{...}"简短名称?使用\N{A umlaut}等会很好,但每次输入\N{LATIN SMALL LETTER A WITH DIAERESIS}等名称实在太长了。我使用英语键盘,但偶尔需要德语字母,例如“Löwenbräu Weißbier”。虽然可以逐个复制和粘贴它们,比如复制L,粘贴ö,再复制wenbr,粘贴ä等,但这样会打乱流程。我希望有一种只需要使用键盘的方法。

1
哪种语言/正则表达式实现允许这样的表达式? - Gumbo
7个回答

3

抱歉,并不存在这样的东西。至少在字符串文字中是这样的... 你可能可以利用其他编码方案,比如HTML:

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

但是我认为这没什么意义。

实际上,几乎没有人使用\N符号...对于偶尔使用的字符,\xnn符号是可接受的;对于更复杂的用法,最好直接输入ä,并确保在脚本中定义了# coding=,如PEP263所述。(如果你没有一个可以直接输入变音符号的键盘布局,请获取一个。例如Windows上的eurokb,或者在Linux上使用Compose键。)


同意,这不值得——我希望有一个\N{auml}。 Mac上有“组合”吗? - denis
虽然不完全像Compose,但显然你应该能够使用Option+U然后A键输入ä。http://tlt.its.psu.edu/suggestions/international/accents/codemac.html - bobince

3
如果您想做正确的事,请在Python源代码中使用UTF-8。这将使代码更易读。
Python能够读取UTF-8源文件,您只需要在第一行后添加一行即可:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

顺便提一下,从Python 3.0开始,UTF-8是默认编码,因此您将不再需要这行代码。请参见PEP3120

好的,但是(澄清添加)我希望有类似于\N{aumlaut}这样快速输入和清晰的字符。 - denis

1
你可以在字符串中放置实际的 "ä" 字符。为此,必须在代码开头声明源代码的编码。
#!/usr/bin/env python
# encoding: utf-8

x = u"ä" 

0

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

u"\u00E4"

0
在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

0
如果你不得不一遍又一遍地重复使用相同的字符,我想你可以尝试这样做:
od = '\N{LATIN SMALL LETTER O WITH DIAERESIS}'
ad = '\N{LATIN SMALL LETTER A WITH DIAERESIS}'
OD = '\N{...}'
#etc
#od stands for o diaeresis, OD stands for O DIAERESIS...

然后稍后:
f'L{od}wenbr{ad}u'

或者类似的东西。 这并不是最简单的解决方案,但比每次使用特殊字符时都输入字符代码要容易记忆(希望如此!)。

0

你有没有考虑过编写自己的转换器?编写一个可以浏览文件并将 \N{A umlaut} 替换为 \N{LATIN SMALL LETTER A WITH DIAERESIS} 以及其他所有内容的程序并不难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接