【问题标题】:Problem with printing contents of a list打印列表内容的问题
【发布时间】:2009-07-05 23:23:50
【问题描述】:

我在使用 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

# -----

有人有类似的经历吗,还是只有我一个人?

【问题讨论】:

    标签: python


    【解决方案1】:

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

    要么将其更改为 ASCII,要么像这样打开它:

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

    【讨论】:

      【解决方案2】:

      尝试替换

      create_user( user )
      

      create_user( user.decode("utf16") )
      

      【讨论】:

      • 我认为大部分问题来自我使用写字板编写文本文件。我在 Emacs 中重做了它,它工作得很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多