打印列表内容时出现问题

时间:2009-07-05 23:23:50

标签: python

我对Python(2.6.2)有一个奇怪的问题,我得出结论是Vista端口中的一个错误(我无法在XP或Linux中复制它)。

我有一个用户列表,加密密码,以及我存储在更大列表中的主机(它作为一种数据库)。

除了单个用户的数据存储方式和存储组的存储方式不一致之外,这一切都很好用。但

由'create_user'方法

创建
  

['localhost','demo','demouserpasswordhash']

由'create_database'方法

创建
  

['\ xff \ xfel \ x00o \ x00c \ x00a \ x00l \ x00h \ x00o \ x00s \ x00t \ x00','\ x00d \ x00e \ x00m \ x00o \ x00','\ x00d \ x00e \ x00m \ x00o \ x00u \ x00s \ x00e \ x00r \ x00p \ X00A \ 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

# -----

任何人都有类似的经历或只是我吗?

2 个答案:

答案 0 :(得分:6)

您的文件users.txt是UTF-16,但您将其打开为ASCII。

将其更改为ASCII,或者像这样打开它:

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

答案 1 :(得分:1)

尝试替换

create_user( user )

create_user( user.decode("utf16") )