String 有没有办法检查序号位置是否包含字符或为空?

String 有没有办法检查序号位置是否包含字符或为空?,string,python-2.7,unicode,String,Python 2.7,Unicode,如果我使用序号打印字符,并且序号位置不包含任何有效字符,则结果如下: >>> print unichr(0x0c80) ಀ 现在我想从一个字符串中过滤这样的空字符,我尝试了str.encode('utf-8',errors='ignore')as: >>> print ''.join([unichr(i) for i in range(0x0c80, 0x0cff)]).encode('utf-8', errors='ignore') ಀಁಂಃ಄ಅಆಇಈಉಊ

如果我使用序号打印字符,并且序号位置不包含任何有效字符,则结果如下:

>>> print unichr(0x0c80)
ಀ
现在我想从一个字符串中过滤这样的空字符,我尝试了
str.encode('utf-8',errors='ignore')
as:

>>> print ''.join([unichr(i) for i in range(0x0c80, 0x0cff)]).encode('utf-8', errors='ignore')
ಀಁಂಃ಄ಅಆಇಈಉಊಋಌ಍ಎಏಐ಑ಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನ಩ಪಫಬಭಮಯರಱಲಳ಴ವಶಷಸಹ಺಻಼ಽಾಿೀುೂೃೄ೅ೆೇೈ೉ೊೋೌ್೎೏೐೑೒೓೔ೕೖ೗೘೙೚೛೜ೝೞ೟ೠೡೢೣ೤೥೦೧೨೩೪೫೬೭೮೯೰ೱೲೳ೴೵೶೷೸೹೺೻೼೽೾
但是空字符仍然存在。是否有任何可能的方法来过滤这些字符

>>> import unicodedata
>>> unicodedata.category(unichr(0x08C0))
'Cn'

Cn是为尚未分配给任何字符的代码点返回的类别。(但是,不能保证它不会在未来的Unicode版本中分配。)

您所问的问题比您想象的要复杂得多。这不是一个“空字符”。它只是一个字符,您安装的字体中没有可用的字形。“字符”本身既不是无效的,也不是空的,代码点可能根本不被使用。同样重要的是:
>>unicodedata.unidata\u version
'x.y.z'
unicodedata.category(Unicode(0x08C0))
引发此错误:
NameError:name'Unicode'未定义
@BHATIRSHAD请改用
unicodedata.category(Unicode(unichr(0x0c80))
抱歉,应该是
unichr
。不确定我是否输入错误,或者SO的自动更正是否发现了我。。。