Я хочу прочитать несколько слов из файла excel и извлечь некоторую информацию. Чтение файла без проблем.Python: приращение специального символа Í
Дело в том, что я хочу увеличить последний символ слова. Для обычных символов, таких как A, это не проблема. Но специальные символы, такие как «Í», являются проблемой.
Я прочитал содержание с этим:
val = val.encode('utf-8')
Я ставлю это значение в словаре.
Следующим шагом является итерация по dict и получение сохраненной информации. info ['streettype'] содержит мой val из ранее. Теперь я преобразовать значение в верхнем регистре, как это:
w2 = info['streettype'].decode('utf-8').upper().encode('utf-8')
Это необходимо потому, что некоторые символы являются особенными, как я уже говорил (например, «é», «Z», «I»). Теперь я хочу увеличить последний символ слова, который может быть особым символом.
w3 = w2.decode('utf-8')[:-1].encode('utf-8')
lastLetter = w2.decode('utf-8')[-1].encode('utf-8')
Теперь я увеличиваю персонажа с помощью:
lastLetter2 = (chr(ord(lastLetter.decode('utf-8')) + 1))
Далее я хочу сохранить его в текстовом файле. Я хочу сохранить исходное слово и отредактированное слово. Мне кажется, мне нужно переписать мой lastLetter2, но он не работает. Когда я просто сохраняю свои w2 и w3 + lastLetter2, я получаю странные результаты, потому что некоторые из них закодированы, а некоторые нет.
Для слова:
NÁBŘEŽÍ
мой результат:
"NÃBŘEŽÃ", "NÃBŘEŽÎÃ"
, но я хочу:
"NÁBŘEŽÍ", "NÁBŘEŽÎ"
(Н является ASCII 205, я это ASCII 206)
Может кто-нибудь помочь мне сохранить это проблема?
не работают (конкатенации, символы изменения) на закодированных строк. Работайте по юникодным (декодированным) строкам и ** кодируйте только после того, как вы закончите ** – goncalopp
* Í is ascii 205, is is ascii 206 *. Нет, они не. Эти символы ** не входят в стандарт ASCII **, который имеет только 128 кодовых точек. Это символы iso-8859-1 (Latin-1), и в стандарте * * * они действительно закодированы до 205 и 206. Они также имеют одинаковый * Unicode * код. –
Вы используете Python 2 или 3 здесь? –