Я работаю над этим небольшим сценарием: в основном он отображает элементы списка (со специальными символами в нем) на его индекс для создания словаря.
#!/usr/bin/env python
#-*- coding: latin-1 -*-
ln1 = '?0>9<8~7|65"4:3}2{1+_)'
ln2 = "(*&^%$£@!/`'\][=-#¢"
refStr = ln2+ln1
keyDict = {}
for i in range(0,len(refStr)):
keyDict[refStr[i]] = i
print "-" * 32
print "Originl: ",refStr
print "KeyDict: ", keyDict
# added just to test a few special characters
tsChr = ['£','%','\\','¢']
for k in tsChr:
if k in keyDict:
print k, "\t", keyDict[k]
else: print k, "\t", "not in the dic."
Он возвращает результат следующим образом:
Originl: (*&^%$£@!/`'\][=-#¢?0>9<8~7|65"4:3}2{1+_)
KeyDict: {'!': 9, '\xa3': 7, '\xa2': 20, '%': 4, '$': 5, "'": 12, '&': 2, ')': 42, '(': 0, '+': 40, '*': 1, '-': 17, '/': 10, '1': 39, '0': 22, '3': 35, '2': 37, '5': 31, '4': 33, '7': 28, '6': 30, '9': 24, '8': 26, ':': 34, '=': 16, '<': 25, '?': 21, '>': 23, '@': 8, '\xc2': 19, '#': 18, '"': 32, '[': 15, ']': 14, '\\': 13, '_': 41, '^': 3, '`': 11, '{': 38, '}': 36, '|': 29, '~': 27}
, что хорошо, за исключением символов £
, %
и \
, которые конвертируются в \xa3
, \xa2
и \\
соответственно.Кто-нибудь знает, почему печать ln1
/ ln2
просто отлично, а словарь - нет.Как я могу это исправить?Любая помощь с благодарностью.Приветствия !!
Обновление 1 Я добавил дополнительные специальные символы - #
и ¢
, и вот что я получаю после @Предложение Дункана:
! 9
? 7
? 20
% 4
$ 5
....
....
8 26
: 34
= 16
< 25
? 21
> 23
@ 8
? 19
....
....
Обратите внимание на 7-й, 19-й и 20-й элементы, которые вообще не печатаются правильно.21-й элемент - это действительный символ ?
.Ура !!
Обновление 2 Просто добавили этот цикл в мое исходное сообщение, чтобы на самом деле проверить мою цель:
tsChr = ['£','%','\\','¢']
for k in tsChr:
if k in keyDict:
print k, "\t", keyDict[k]
else: print k, "\t", "not in the dic."
и вот что яполучить в результате:
£ not in the dic.
% 4
\ 13
¢ not in the dic.
Вист, запустив скрипт, думает, что £
и ¢
на самом деле отсутствуют в словаре - и это моя проблема.Кто-нибудь знает, как это исправить или что / где я делаю не так?
в конце концов, я буду проверять наличие символов в файле (или строке текста) в словаре, чтобы узнать, существует ли он, и есть ли вероятность наличия символа, подобного é
или£
и так далее в тексте.Ура !!