从像smileys这样的字符串中删除特殊字符,但保留德语特殊字符

时间:2018-01-15 20:48:38

标签: python python-3.x unicode ascii python-module-unicodedata

我知道如何删除字符串中不需要的字符,如表情符号等。但是,像德语这样的语言也有特殊的特征。

这是我目前的代码:

import unicodedata
string = "süß "
uni_str = str(unicodedata.normalize('NFKD', \
           string).encode('ascii','ignore'))

是否有可能让德国特殊字符删除其他不需要的字符,例如表情符号?这样uni_str会在最后收到字母“süß”吗?

当然,笑脸会被删除,但是德语字符也会被转换为其他人声或删除。

示例中的笑脸只是示例性的,可以是任何不需要的角色。

我正在使用Python 3.6和Windows 10

2 个答案:

答案 0 :(得分:3)

你可以做这样简单的事情(只需添加德语字母):

def filter_characters(self, value):
    allowed_characters = " 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    return ''.join(c for c in value if c in allowed_characters )

修改

另一种可能性是借助字符串模块创建allowed_characters:

import string
allowed_characters = string.printable + 'öäüß'

答案 1 :(得分:0)

我不知道您的世界中哪些字符是特殊的或其他不需要的字符,但是可能使用“符号,其他”属性删除所有字符是有用的:

import unicodedata as ud

def remove_symbols(text):
    return ''.join(c for c in text if ud.category(c) != 'So')

这将保留任何字母,数字,标点符号和空格字符,因此以下示例不会丢失花哨的引号或“é”:

>>> remove_symbols('Was für ein «süßes» Café! ')
'Was für ein «süßes» Café! '

查看Wikipedia上的可用类别或在unicode.org上搜索。