如何在python中从unicode转换成utf8?

2024-10-02 22:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写python脚本,从sqlite3数据库中提取xbmc媒体应用程序的数据。在

我可以看到,在我的代码中,它将使用unicode对象提取数据,其中我将有字符串(u'u和{}。在

我想把它转换回普通字符串,从unicode对象转换成utf8。在

代码如下:

programs = None
daysLimit = 14
start = datetime.datetime.now()
end = start + datetime.timedelta(days = daysLimit)
cur.execute('SELECT channel, title, start_date, stop_date FROM programs WHERE channel')
programs = cur.fetchall()

print(programs)
cur.close()

以下是xbmc日志:

^{pr2}$

我想忽略字符串(u'uL,所以我想让它看起来像这样:

'101 ABC FAMILY ', 'The Middle -  The Ditch', 20140520170000, 20140520173000, 
'101 ABC FAMILY ', 'The Goonies', 20140520173000, 20140520200000, 
'101 ABC FAMILY ', 'Pirates of the Caribbean: On Stranger Tides', 20140520200000, 20140520230000, 
'101 ABC FAMILY ', 'The 700 Club', 20140520230000, 20140521000000, 
'101 ABC FAMILY ', 'The Fresh Prince of Bel-Air -  Day Damn One', 20140521000000, 20140521003000,
and so on...

您能告诉我如何使用python2.6版本将unicode对象转换为utf8吗?在


Tags: the数据对象字符串代码datetimeunicodeutf8
2条回答

您的问题是您试图显示数据,而不是显示python表示,如果该对象。在

所以它包含像u,L等元数据。 如果你想以你想要的方式显示数据,你应该写一个代码来处理它。在

例如:

for row in cur.fetchall():
    print u"'{row[0]}', '{row[1]}', '{row[2]}', '{row[3]}', '{row[4]}'".format(row=row)

所以它看起来像

^{pr2}$

但是。。。如我所见,你使结构看起来像CSV文件(逗号分隔值),是吗?所以,也许,你应该读一读csv python模块?在

  • L后缀表示长整数。它们实际上和(短)整数是一样的;实际上不需要转换它们。只有它们的repr()输出包含L;直接打印值或将其写入文件,并且不包括L后缀。

  • 可以使用unicode.encode()方法将Unicode值编码为UTF-8:

    encoded = unicodestr.encode('utf8')
    

这里的重点是列表表示;您记录了所有行,Python容器通过对每个值调用repr()来表示它们的内容。这些表示对于调试非常有用,因为它们的类型非常明显。在

这取决于您如何处理这些值。通常在代码中使用Unicode是一个好主意,并且只在最后一刻编码(当写入文件、打印或通过网络发送时)。有很多方法可以帮你处理这个问题。例如,打印将自动编码到终端编解码器。当添加到XML文件时,大多数XML库都会为您处理Unicode。等等

相关问题 更多 >