2011-05-07 35 views
1

這裏是一個在python腳本中使用的Unicode單詞數組。將單詞從文件讀入集合,維護順序

texts =[u"abc", u"pqr", u"mnp"] 

該腳本按照預期與上述3個單詞的例子一起工作。問題在於文本文件中有數千個單詞。 如何從文本文件讀取?

更新: 我有2個問題。輸出中不會保留文本文件中的單詞序列。 該文本文件具有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']) 
+0

重複:http://stackoverflow.com/questions/4963499/ – Wok 2011-05-07 07:12:31

回答

2

我看到你的文件讀取的代碼沒有問題。鑑於單詞出現在空格分隔的文件中,並且該文件不會太大而不能被單個read吞噬,它應該可以正常工作。真正的問題是如果你將它們推入set這些詞的順序。

如果您需要的文字與文件中出現的順序相同,爲什麼使用set?把它們放在一個列表中。

如果你需要一個set刪除重複和/或其他目的,那麼你有以下幾種選擇:

+0

>>你爲什麼要使用一組?把它們放在一個列表中。 # 好問題。謝謝。 – shantanuo 2011-05-07 08:26:48

2

這是因爲套裝是如何工作的。他們不維護存儲在集合中的項目的順序。

documentation

一組對象不同可哈希的無序集合對象