从列表中提取整数和Unicode

2024-06-01 03:52:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做我的语言学项目(语言是马拉雅拉姆语)。你知道吗

我的名单是

x= [u'1\u0d30\u0d3e\u0d2e\u0d28\u0d4d\u200d', u'5\u0d05\u0d35\u0d28\u0d4d\u200d']  

我想从列表中的每一项中提取整数和Unicode。你知道吗

预期输出为

1 \u0d30\u0d3e\u0d2e\u0d28\u0d4d\u200  
5 \u0d05\u0d35\u0d28\u0d4d\u200d

首先,我尝试将第一项x[0]转换为ascii

print unicodedata.normalize('NFKD',x[0]).encode('ascii','ignore') 

输出为1。你知道吗

我认为生成这个输出是因为unicode in列表是针对马拉雅拉姆语的。你知道吗

然后我试图找到“\u”的第一个索引

x[0].index("\u")

执行此操作时出错。你知道吗


Tags: 项目语言列表ascii整数语言学名单u0d05
2条回答

字符序列\uXXXX表示单个unicode字符,而不是字符串中的字符序列。你知道吗

您可以得到预期的输出,如下所示:

for i in x:
    print int(i[0]), repr(i[1:])[2:-1]

(假设整数只有一个数字)

对于更一般的情况,一种解决方案是使用正则表达式提取整数:

import re
for i in x:
    s = re.match('([0-9]+)', i).group(1)
    print int(s), repr(i[len(s):])[2:-1]
>>> x= [u'1\u0d30\u0d3e\u0d2e\u0d28\u0d4d\u200d', u'5\u0d05\u0d35\u0d28\u0d4d\u200d']  
>>> res = [ (i[:1], i[1:]) for i in x ]
>>> res
[(u'1', u'\u0d30\u0d3e\u0d2e\u0d28\u0d4d\u200d'), (u'5', u'\u0d05\u0d35\u0d28\u0d4d\u200d')]

>>> for i in res:
...     print i[0], repr(i[1])
... 
1 u'\u0d30\u0d3e\u0d2e\u0d28\u0d4d\u200d'
5 u'\u0d05\u0d35\u0d28\u0d4d\u200d'

相关问题 更多 >