Python 列出文件中的unicode单词
我的代码是Python 列出文件中的unicode单词,python,unicode,utf-8,Python,Unicode,Utf 8,我的代码是 f = codecs.open(r'C:\Users\Admin\Desktop\nepali.txt', 'r', 'UTF-8') nepali = f.read().split() for i in nepali: print i 在文件中显示单词: यो किताब टेबुल मा छ यो एक किताब हो केटा 但当我试图用代码创建单词列表时: file=codecs.open(r'C:\Users\Admin\Desktop\nepali.txt
f = codecs.open(r'C:\Users\Admin\Desktop\nepali.txt', 'r', 'UTF-8')
nepali = f.read().split()
for i in nepali:
print i
在文件中显示单词:
यो
किताब
टेबुल
मा
छ
यो
एक
किताब
हो
केटा
但当我试图用代码创建单词列表时:
file=codecs.open(r'C:\Users\Admin\Desktop\nepali.txt', 'r', 'UTF-8')
nepali = list(file.read().split())
print nepali
输出现在显示如下
[u'\ufeff\u092f\u094b', u'\u0915\u093f\u0924\u093e\u092c', u'\u091f\u0947\u092c\u0941\u0932', u'\u092e\u093e', u'\u091b', u'\u092f\u094b', u'\u090f\u0915', u'\u0915\u093f\u0924\u093e\u092c', u'\u0939\u094b',]
输出应该如下所示:
[यो, किताब, टेबुल, मा, छ,यो, एक, किताब, हो]
您正在查看的是的输出,它始终用于显示容器的内容。输出用于调试,而不是最终用户显示;任何不可打印的非ASCII码点都由转义序列表示(根据码点的不同,转义序列可以是单字符转义,如
\t
或\n
,或使用2、4或8个十六进制数字,如\xe5
、\u2603
或\U0001f4e2
)
您必须手动生成输出:
print u'[{}]'.format(u', '.join(nepali))
这将生成一个unicode字符串,其格式类似于列表对象,但不使用repr()
,只需在字符串周围添加方括号,并加上,'
(逗号和空格)
演示:
但是,如果要向最终用户显示此字符,为什么要使用方括号?注意,如果字符可打印,Python 3将在列表中显示Unicode:
['\ufeffयो', 'किताब', 'टेबुल', 'मा', 'छ', 'यो', 'एक', 'किताब', 'हो']
第一个字符串中的'\ufeff'
是一个字节顺序标记(BOM)。utf-8-sig
编解码器将在读取文件时自动检测并删除它。
>>> nepali = [u'\ufeff\u092f\u094b', u'\u0915\u093f\u0924\u093e\u092c', u'\u091f\u0947\u092c\u0941\u0932', u'\u092e\u093e', u'\u091b', u'\u092f\u094b', u'\u090f\u0915', u'\u0915\u093f\u0924\u093e\u092c', u'\u0939\u094b',]
>>> print u'[{}]'.format(u', '.join(nepali))
[यो, किताब, टेबुल, मा, छ, यो, एक, किताब, हो]