Python 从列表中的每个项目中提取整数和Unicode
我正在做我的语言学项目(语言是马来语) 我的名单是Python 从列表中的每个项目中提取整数和Unicode,python,list,unicode,Python,List,Unicode,我正在做我的语言学项目(语言是马来语) 我的名单是 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 unico
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是针对malayalam的
然后我试图找到“\u”的第一个索引,就像
执行此操作时出错。字符序列
\uxxx
表示单个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]
在这里查看python
repr
函数的更多信息:解释器中的res
表示是OP想要的输出,但它不是您打印它时得到的。您需要使用repr
函数来获取对象表示。是的,我得到了它,如果我们使用“print”,它将打印实际的unicode对象。因此,我们需要使用repr函数。谢谢:)
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'