如何在Python中过滤出unicode字符?

如何在Python中过滤出unicode字符?,python,unicode,Python,Unicode,我在python中研究unicode值已经有一段时间了。首先,所有的问题和答案都很有帮助。谢谢:) 接下来,我要在我的项目中分离每种语言的unicode值 与此类似,某个函数只接受unicode值0900到097F之间的印地语代码。现在我希望它拒绝所有unicode值的其余部分 到目前为止,我已经完成了 for i in range(len(l1)): for j in range(len(l1[i])): unn = '%04x' % ord(l1[i][j])

我在python中研究unicode值已经有一段时间了。首先,所有的问题和答案都很有帮助。谢谢:)

接下来,我要在我的项目中分离每种语言的unicode值

与此类似,某个函数只接受unicode值0900到097F之间的印地语代码。现在我希望它拒绝所有unicode值的其余部分

到目前为止,我已经完成了

for i in range(len(l1)):
    for j in range(len(l1[i])):
        unn = '%04x' % ord(l1[i][j])
        unn1 = int(unn, 16)
        if unn1 not in range(2304, 2431):
            l1[i] = l1[i].replace(l1[i][j], '')
这段代码从列表l1中获取值,并执行我希望它执行的操作。但问题是,它解决了一个字符,然后在第3行终止

再次手动运行时,它会运行并再次解算一个或两个字符,然后再次终止

我甚至不能把它放进一个循环里

请帮忙


更新:

我不想再写一篇文章,所以只使用这篇 我得到了一些帮助并修改了代码。存在索引问题

for i in range(len(dictt)):
    j=0
    while(1):
        if j >= len(dictt[i]):
            break
        unn = '%04x' % ord(dictt[i][j])
        unn1 = int(unn, 16)
        j = j+1
        if unn1 not in range(2304, 2431):
            dictt[i] = dictt[i].replace(dictt[i][j-1], '')
            j=0
这段代码对于我之前的查询(我指的是特定范围的查询)效果非常好,但是如果我更改了范围或功能,那么同样的问题再次出现在同一行。
为什么那一行给出了错误???

最好的解决方案很可能是使用正则表达式过滤掉不需要的字符。基本上,您需要一个正则表达式来匹配印地语字符,但据我所知,印地语字符在“re”模块中有错误,因此我建议使用以下命令下载“regex”模块:

$pip安装正则表达式

之后,如果所有单词都是用印地语写的,您只需逐字检查即可:

// kinda pseudo code, sorry
import regex
yourString = your_string_in_hindi
words = yourString.split(" ")
for word in words:
    if not regex.match(HINDI_WORD_REGEX, word):
        // whatever you want to do
您还可以在此处找到一些与您的问题相关的有用信息:

希望这至少能帮助你开始。祝你好运

试试这个:

def filter(text, range):
    return ''.join([char for char in text if ord(char) in range])
def converter(string_, range_ = (2304, 2431)):
    """ Filter the unicode characters """
    min, max = range_
    return ''.join(c for c in string_ if (min <= ord(c) < max))
def转换器(字符串,范围=(23042431)):
“”“筛选unicode字符”“”
最小值,最大值=范围_

返回“”。如果(min我不确定我是否理解。因此,您希望允许指定范围内的unicode字符,而忽略其余字符?还是只想删除所有unicode字符?还有,您所说的“终止”是什么意思?是否引发了异常或其他问题?我希望允许某个范围并删除其余字符。是的,它为e行unn-'%04x'%ord(l1[i][j])表示字符串索引超出范围,我不知道原因