我正在做语言学项目(语言是马拉雅拉姆语)。
我的列表是
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 适用于马拉雅拉姆语。
然后我尝试找到“\u”的第一个索引,例如
x[0].index("\u")
执行此操作时发生错误。
最佳答案
字符序列\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]
关于python - 从列表中的每个项目中提取整数和 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006216/