короткие имена Unicode \ N {} для символов Latin-1 в Python? - PullRequest
4 голосов
/ 26 декабря 2009

Есть ли короткие имена Unicode u "\ N {...}" для символов Latin1 в Python? \ N {Умляут} и т. Д. Было бы неплохо,
\ N {LATIN SMALL LETTER A WITH DIAERESIS} и т. Д. Просто слишком длинный, чтобы печатать каждый раз.
(Добавлено :) Я использую английскую клавиатуру, но иногда нужны немецкие буквы, как в "Löwenbräu Weißbier".
Да, можно вырезать и вставить их по отдельности, L cutpaste ö wenbr cutpaste ä ... но это нарушает поток; Я надеялся, что только для клавиатуры.

Ответы [ 6 ]

3 голосов
/ 26 декабря 2009

Если вы хотите поступить правильно, используйте UTF-8 в вашем исходном коде Python . Это сделает код намного более читабельным.

Python может работать с исходными файлами UTF-8, все, что вам нужно сделать, это добавить дополнительную строку после первой:

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

Кстати, начиная с Python 3.0 UTF-8 является кодировкой по умолчанию, поэтому эта строка вам больше не понадобится. См PEP3120

3 голосов
/ 26 декабря 2009

Извините, нет, такого нет. В любом случае, в строковых литералах ... возможно, вы могли бы использовать другую схему кодирования, например HTML:

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

Но я не думаю, что это того стоит.

Вряд ли кто-либо даже использует запись \N в любом случае ... для случайного символа запись \xnn является приемлемой; для более активного использования лучше просто набрать ä напрямую и убедиться, что # coding= определено в скрипте согласно PEP263 . (Если у вас нет раскладки клавиатуры, которая может печатать эти диакритические знаки напрямую, получите ее. Например, eurokb в Windows или используйте клавишу Compose в Linux.)

1 голос
/ 26 декабря 2009

Вы можете поместить действительный символ "ä" в вашей строке. Для этого вы должны объявить кодировку исходного кода сверху

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

x = u"ä" 
0 голосов
/ 27 декабря 2009

В 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 голосов
/ 26 декабря 2009

Вы можете использовать нотацию Unicode \uXXXX описать этот символ:

u"\u00E4"
0 голосов
/ 26 декабря 2009

Вы думали написать собственный конвертер? Нетрудно написать что-то, что пройдет через файл и заменит \ N {A umlaut} на \ N {LATIN SMALL LETTER A WITH DIAERESIS} и все остальное.

...