просмотреть список со словарем в Python - PullRequest
0 голосов
/ 11 января 2011

Привет, я пытался это в течение некоторого времени, но пока безрезультатно. у меня есть dict = {'Å':'a', 'Ä':'a', 'Ö':'0', 'å':'a', 'ä':'a', 'ö':'o'}

 input = lxml.etree.parse(inputxml)
 for block in input.xpath('//PAGE/BLOCK/TEXT'):
    J = block.xpath('TOKEN/text()')
    current = 0
    line = ""
    while current < len(J):
        A = J[current]
        current += 1

мне нужно отсканировать A с помощью dict, найти неанглийские буквы и заменить его английской буквой

   for i in A:
        if(dict.has_key(i)):
              ReplaceWord= A.replace(i,dict[i])

но это не работает

Ответы [ 3 ]

3 голосов
/ 11 января 2011

Не то, о чем вы спрашивали, но, похоже, вас это может заинтересовать: Unidecode - это модуль, специально предназначенный для сокращения любой серии символов до наиболее похожих символов ASCII.

>>> import unidecode # to install: `pip install unidecode`
>>> line = u"Flyttbara hyllplan anpassar förvaringen så"
>>> unidecode.unidecode(line)
u'Flyttbara hyllplan anpassar forvaringen sa'
2 голосов
/ 11 января 2011

Оба в Python 3 и 2.x:

letters = {'Å':'a', 'Ä':'a', 'Ö':'0', 'å':'a', 'ä':'a', 'ö':'o'}
line = "Flyttbara hyllplan anpassar förvaringen så"
for c in letters:
    line = line.replace(c, letters[c])
2 голосов
/ 11 января 2011

translate - это то, что вам нужно.

d=str.maketrans('ÅÄÖåäö','aaoaao')
s.translate(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...