Python 打印列表内容时出现问题

Python 打印列表内容时出现问题,python,Python,我对Python(2.6.2)有一个奇怪的问题,我得出的结论是Vista端口中有一个bug(我无法在XP或Linux中复制它) 我有一个用户列表、加密密码和他们的主机,我将它们存储在一个更大的列表中(它充当一种数据库) 除了单个用户的数据存储方式和组的存储方式不一致之外,所有这些都可以正常工作 通过“创建用户”方法创建 ['localhost'、'demo'、'demouserpasswordhash'] 通过“创建_数据库”方法创建 ['\xff\xfel\x00o\x00c\x00a\x00

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

我有一个用户列表、加密密码和他们的主机,我将它们存储在一个更大的列表中(它充当一种数据库)

除了单个用户的数据存储方式和组的存储方式不一致之外,所有这些都可以正常工作

通过“创建用户”方法创建

['localhost'、'demo'、'demouserpasswordhash']

通过“创建_数据库”方法创建

['\xff\xfel\x00o\x00c\x00a\x00l\x00h\x00o\x00s\x00t\x00','\x00d\x00e\x00m\x00o\x00','\x00d\x00e\x00m\x00o\x00u\x00s\x00e\x00p\x00a\x00s\x00s\x00w\x00o\x00r\x00d\x00h\x00a\x00s\x00\x00']

我不明白它为什么这么做,因为它的代码有多简单:

# ----- 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

# -----

有没有人对此有过类似的经历?还是只有我一个人?

您的文件users.txt是UTF-16格式的,但您是以ASCII格式打开的

将其更改为ASCII,或按如下方式打开:

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

您的文件users.txt是UTF-16格式的,但您正在以ASCII格式打开它

将其更改为ASCII,或按如下方式打开:

import codecs
users = codecs.open( "users-16.txt", "r", "utf-16" )
试着替换

create_user( user )

试着替换

create_user( user )


我想大部分问题都是我用写字板写文本文件造成的。我在Emacs中重新编辑了它,效果很好。我想大部分问题都是因为我使用写字板编写文本文件。我在Emacs中重播了它,效果很好。