从字符串中删除特殊字符,例如笑脸,但保留德语特殊字符
Remove special characters from string such as smileys but keep german special charactes
我知道如何删除字符串中不需要的字符,例如笑脸符号等。但是,某些语言(如德语)也有特殊字符。
这是我当前的代码:
import unicodedata
string = "süß "
uni_str = str(unicodedata.normalize('NFKD', \
string).encode('ascii','ignore'))
是否可以保留德语特殊字符而不删除其他不需要的字符,例如笑脸符号?这样 uni_str
将在末尾保留字母 "süß"?
目前,笑脸会被删除,但德文字符也会转换为其他人声或删除。
示例中的笑脸只是示例,可以是任何不需要的字符。
我正在使用 Python 3.6 和 Windows 10
您可以像这样简单地做一些事情(只需添加德语字母):
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 + 'öäüß'
我不知道哪些字符在你的世界中是特殊的或不需要的,但也许删除所有带有 "Symbol, Other" 属性 的字符是有用的:
import unicodedata as ud
def remove_symbols(text):
return ''.join(c for c in text if ud.category(c) != 'So')
这将保留任何字母、数字、标点符号和白色 space 字符,因此以下示例不会丢失花哨的引号或“é”:
>>> remove_symbols('Was für ein «süßes» Café! ')
'Was für ein «süßes» Café! '
查看 Wikipedia 上的可用类别或在 unicode.org 上搜索。
我知道如何删除字符串中不需要的字符,例如笑脸符号等。但是,某些语言(如德语)也有特殊字符。
这是我当前的代码:
import unicodedata
string = "süß "
uni_str = str(unicodedata.normalize('NFKD', \
string).encode('ascii','ignore'))
是否可以保留德语特殊字符而不删除其他不需要的字符,例如笑脸符号?这样 uni_str
将在末尾保留字母 "süß"?
目前,笑脸会被删除,但德文字符也会转换为其他人声或删除。
示例中的笑脸只是示例,可以是任何不需要的字符。
我正在使用 Python 3.6 和 Windows 10
您可以像这样简单地做一些事情(只需添加德语字母):
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 + 'öäüß'
我不知道哪些字符在你的世界中是特殊的或不需要的,但也许删除所有带有 "Symbol, Other" 属性 的字符是有用的:
import unicodedata as ud
def remove_symbols(text):
return ''.join(c for c in text if ud.category(c) != 'So')
这将保留任何字母、数字、标点符号和白色 space 字符,因此以下示例不会丢失花哨的引号或“é”:
>>> remove_symbols('Was für ein «süßes» Café! ')
'Was für ein «süßes» Café! '
查看 Wikipedia 上的可用类别或在 unicode.org 上搜索。