2009-07-05 70 views
1

我對Python(2.6.2)有點奇怪的問題,我得出的結論是Vista端口中的一個錯誤(我無法在XP或Linux中複製它)。打印列表內容的問題

我有一個用戶列表,加密密碼和他們的主機,我存儲在一個更大的列表(它充當一種數據庫)。

這一切都工作正常和丹迪,除了存儲單個用戶的數據如何存儲和如何存儲組不一致。

由 'create_user' 方法

[ '本地主機', '演示', 'demouserpasswordhash']

由 'create_database' 創建

方法創建

[ '\ x00d \ x00c \ x00a \ x00l \ x00h \ x00o \ x00s \ x00t \ x00','\ x00d \ x00e \ x00m \ x00o \ x00u \ x00s \ x00e \ x00s \ x00s \ x00w \ x00o \ x00r \ x00d \ x00h \ x00a \ x00s \ x00h \ x00 \ r \ x00 \ n']

我不明白爲什麼它這樣做,因爲它的代碼是多麼簡單:

# ----- base functions 

def create_user (user_data): 
    return user_data.split(":") 

def show_user (user_data): 
    print "Host: ", user_data[0] 
    print "Username: ", user_data[1] 
    print "Password: ", user_data[2] 
    print 

def create_database (user_list): 
    database = [] 
    for user in user_list: 
     database.append(create_user(user)) 
    return database 

def show_database(database): 
    for row in database: 
     show_user(row) 

# ----- test area 

users = open("users.txt") 


test_user = create_user("localhost:demo:demouserpasswordhash") 
db = create_database(users) 

print db[0] 
print test_user 

# ----- 

任何人有任何與此相似的經歷,或只是我嗎?

回答

6

你的文件users.txt是UTF-16,但是你打開它作爲ASCII。

要麼將​​其更改爲ASCII,或打開它就像這樣:

import codecs 
users = codecs.open("users-16.txt", "r", "utf-16") 
+0

更換

create_user(user) 

I <3你。謝謝。 – 2009-07-05 23:31:43

1

嘗試用

create_user(user.decode("utf16")) 
+0

我認爲大部分問題都來自我使用寫字板寫入文本文件。我把它重新編入Emacs,它工作得很好。 – 2009-07-05 23:35:57