从文件中读取单词到集合,保持顺序
这里有一个包含Unicode单词的数组,用在Python脚本中。
texts =[u"abc", u"pqr", u"mnp"]
这个脚本在上面这三个单词的例子中运行得很好。问题是,文本文件里有成千上万的单词。 我该怎么从文本文件中读取这些单词呢?
更新: 我有两个问题。一个是从文本文件中读取的单词顺序在输出中没有保持。 另一个是文本文件里有Unicode字符,所以在我原来的例子中有个“u”。
# cat testfile.txt
Testing this file with Python
# cat test.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
f = open('testfile.txt', 'r')
texts = set(f.read().split())
print (texts)
# python test.py
set(['this', 'Python', 'Testing', 'with', 'file'])
2 个回答
2
2
我觉得你的文件读取代码没有问题。因为文件中的单词是用空格分开的,而且文件也不大,可以一次性读取,所以应该没问题。真正的问题在于,如果你把这些单词放进一个 set
里,它们的顺序会变。
如果你想要单词保持和文件里一样的顺序,那你为什么要用 set
呢?直接用列表来保存它们就可以了。
如果你需要用 set
来去重或者其他目的,那你可以考虑以下几种方法:
- 使用
OrderedDict
类 - 从 Python 2.7 开始就有这个功能,网上也有适用于早期版本的教程。 - 创建一个有序集合 - 这里有一个 SO 问题,讨论得很好