打印列表内容时出现问题

Jos*_*lin 1 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

# -----
Run Code Online (Sandbox Code Playgroud)

任何人都有类似的经历,还是仅仅是我?

Ric*_*dle 6

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

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

import codecs
users = codecs.open( "users-16.txt", "r", "utf-16" )
Run Code Online (Sandbox Code Playgroud)