我知道如何删除字符串中不需要的字符,如表情符号等。但是,像德语这样的语言也有特殊的特征。
这是我目前的代码:
import unicodedata
string = "süß "
uni_str = str(unicodedata.normalize('NFKD', \
string).encode('ascii','ignore'))
是否有可能让德国特殊字符删除其他不需要的字符,例如表情符号?这样uni_str
会在最后收到字母“süß”吗?
当然,笑脸会被删除,但是德语字符也会被转换为其他人声或删除。
示例中的笑脸只是示例性的,可以是任何不需要的角色。
我正在使用Python 3.6和Windows 10
答案 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上搜索。