У меня есть слова со специальными немецкими символами (ÄÖÜäöüß) и вы хотите перебирать слова буквами. Наличие этих специальных символов создает проблемы, потому что они преобразуются в два символа:Хранение umlauts в списках/наборах
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "ä" # prints ä
print len(["ä"]) # prints 1
print len(list("ä")) # prints 2
s = set()
s.add("ä")
a = next(iter(s))
print s # prints: set(['\xc3\xa4'])
print a # prints: ä
print len(a) # prints: 2
Что мне нужно изменить, чтобы всегда 1 в качестве ответа, где сейчас 2 печатается?
Сохраните их как символы в Юникоде. Это решает проблему –
Я думаю, что если вы используете 3.x, они будут печатать как 1 длину. Я пробовал ваш код в 3.4.3, и он работал нормально. – Ernesto
Читать это сообщение: [Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать об Unicode и наборах символов (без отговорок!)] (Http://www.joelonsoftware.com/articles/Unicode.html) от Joel Spolsky. И прочитайте статью [UTF-8] (http://en.m.wikipedia.org/wiki/UTF-8) в Википедии. –