从字符串中删除特殊字符

时间:2011-03-10 10:52:24

标签: python

我有一个字符串“MikaelHåfström”,其中包含一些特殊字符,如何使用python删除它?

3 个答案:

答案 0 :(得分:12)

您可以使用unicodedata模块来规范化unicode字符串,并将其编码为ASCII格式,如下所示:

>>> import unicodedata
>>> source = u'Mikael Håfström'
>>> unicodedata.normalize('NFKD', source).encode('ascii', 'ignore')
'Mikael Hafstrom'

一个值得注意的例外是Python不识别字母'đ'和'Đ',它们不会被编码为'd',因此它们将被简单地从结果中省略。这是一种在一些SEE语言的拉丁字母表中出现的浊音 - 腭语,因此它可能会或可能不会立即引起您的观众或您是否提供对Latin-1字符集的完全支持。我目前在本地运行Python 2.6.5(2010年3月19日)并且存在问题,但我确信它可能已经通过新版本解决了。

答案 1 :(得分:5)

例如使用编码方法:u"Mikael Håfström".encode("ascii", "ignore")

答案 2 :(得分:1)

请参阅此effbot article(包含代码)。它尽可能合理地将音译转换成ASCII字符。可以扩展内置转换表以处理没有规范分解的许多其他字符(例如在东欧语言中使用的字符)。