在Python中,是否有适用于Latin1字符的Unicode u"\N{...}"简短名称?使用\N{A umlaut}等会很好,但每次输入\N{LATIN SMALL LETTER A WITH DIAERESIS}等名称实在太长了。我使用英语键盘,但偶尔需要德语字母,例如“Löwenbräu Weißbier”。虽然可以逐个复制和粘贴它们,比如复制L,粘贴ö,再复制wenbr,粘贴ä等,但这样会打乱流程。我希望有一种只需要使用键盘的方法。
抱歉,并不存在这样的东西。至少在字符串文字中是这样的... 你可能可以利用其他编码方案,比如HTML:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape(u'a ä b c')
u'a \xe4 b'
但是我认为这没什么意义。
实际上,几乎没有人使用\N
符号...对于偶尔使用的字符,\xnn
符号是可接受的;对于更复杂的用法,最好直接输入ä
,并确保在脚本中定义了# coding=
,如PEP263所述。(如果你没有一个可以直接输入变音符号的键盘布局,请获取一个。例如Windows上的eurokb,或者在Linux上使用Compose键。)
Option
+U
然后A
键输入ä
。http://tlt.its.psu.edu/suggestions/international/accents/codemac.html - bobince#!/usr/bin/python
# -*- coding: UTF-8 -*-
#!/usr/bin/env python
# encoding: utf-8
x = u"ä"
您可以使用Unicode符号\uXXXX
来描述该字符:
u"\u00E4"
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
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'
你有没有考虑过编写自己的转换器?编写一个可以浏览文件并将 \N{A umlaut} 替换为 \N{LATIN SMALL LETTER A WITH DIAERESIS} 以及其他所有内容的程序并不难。