在Python中使用字典扫描列表

0 投票
3 回答
2249 浏览
提问于 2025-04-16 09:46

你好,我已经尝试这个一段时间了,但还没有结果。 我有一个 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,找到那些非英语字母,并把它们替换成英语字母。

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

但是这样做不行。

3 个回答

2

translate 是你需要的东西。

d=str.maketrans('ÅÄÖåäö','aaoaao')
s.translate(d)
2

在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])
3

虽然这不是你问的内容,但看起来你可能会对此感兴趣: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'

撰写回答