我现在正在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
这段代码完全适用于我之前的查询,我的意思是特定范围,但如果我改变范围或功能,那么同样的问题就出现在同一行。 为什么该行给出错误?
答案 0 :(得分:1)
最好的解决方案是使用正则表达式来过滤掉不需要的字符。你基本上需要一个正则表达式来匹配你的印地语字符,但据我所知,印地语字符在“重新”模块中被删除,所以我建议使用以下命令下载“正则表达式”模块:
$ pip install regex
之后,如果所有单词都用印地语写成,你可以简单地逐字逐句检查:
// 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
您还可以在此处找到与您的问题相关的一些有用信息:
Python - pyparsing unicode characters
Python unicode regular expression matching failing with some unicode characters -bug or mistake?
希望这至少可以帮助你开始。祝你好运!
答案 1 :(得分:0)
def filter(text, range):
return ''.join([char for char in text if ord(char) in range])
答案 2 :(得分:0)
试试这个:
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))