python:替换字符串中的特殊字符

时间:2011-02-08 11:34:23

标签: python special-characters

我从MP3标签中读取了一首歌的艺术家,然后根据该名称创建了一个文件夹。我遇到的问题是名称包含一个特殊字符,如'AC \ DC'。所以我写了这段代码来解决这个问题。

def replace_all(text):
  print "replace_all"
  dictionary = {'\\':"", '?':"", '/':"", '...':"", ':':"", chr(148):"o"}

  for i, j in dictionary.iteritems():
      text = text.replace(i,j)

  return text

我现在遇到的是如何处理非英语字符,如在Motorhead或Blue Oyster cult中的umlaout o。

如您所见,我尝试在字典末尾添加ascii-string版本的umlaout o,但失败了

UnicodeDecodeError:  'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)

2 个答案:

答案 0 :(得分:3)

我找到了这段代码,虽然我不明白。

def strip_accents(s):
  return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))

它使我能够从建议的目录/文件名的路径中删除重音符号。

答案 1 :(得分:0)

我建议在输入文本和替换字符时使用unicode。在您的示例中,chr(148)显然不是unicode符号。