我正在使用我的python脚本从sqlite3数据库中为xbmc媒体应用程序提取数据。
我可以看到,在我的代码中,它将使用unicode对象提取数据,我将拥有字符串(u'
,u
和L
。
我想将它从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日志:
03:49:03 T:3628 NOTICE: [(u'101 ABC FAMILY ', u'The Middle - The Ditch',
20140520170000L, 20140520173000L), (u'101 ABC FAMILY ', u'The Goonies',
20140520173000L, 20140520200000L), (u'101 ABC FAMILY ', u'Pirates of the Caribbean: On Stranger Tides',
20140520200000L, 20140520230000L), (u'101 ABC FAMILY ', u'The 700 Club',
20140520230000L, 20140521000000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air - Day Damn One',
20140521000000L, 20140521003000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air - Lucky Charm',
20140521003000L, 20140521010000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air - The Ethnic Tip',
20140521010000L, 20140521013000L), (u'101 ABC FAMILY ', u'The Fresh Prince of Bel-Air - The Young and the Restless',
20140521013000L, 20140521020000L), (u'101 ABC FAMILY ', u'Summer Sexy With T25!',
20140521020000L, 20140521023000L), (u'101 ABC FAMILY ', u'Paid Programming',
20140521023000L, 20140521030000L)
我想忽略字符串(u'
,u
和L
,所以我想让它看起来像这样:
'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...
请告诉我如何使用python 2.6版本将unicode对象转换为utf8?
答案 0 :(得分:2)
L
后缀表示长整数。它们与(短)整数完全相同;真的没有必要转换这些。只有repr()
输出包含L
;直接打印值或将其写入文件,并且不包含L
后缀。
可以使用unicode.encode()
方法将Unicode值编码为UTF-8:
encoded = unicodestr.encode('utf8')
你的牛肉是这里的清单代表;您记录了所有行,Python容器通过对每个值调用repr()
来表示其内容。这些表示非常适合调试,因为它们的类型很明显。
这取决于您对这些值 next 的处理方式。在整个代码中使用Unicode通常是个好主意,并且只在最后一刻(写入文件,或通过网络打印或发送时)进行编码。很多方法为你处理这个。例如,打印将自动编码到终端编解码器。添加到XML文件时,大多数XML库会为您处理Unicode。等
答案 1 :(得分:0)
您的问题是您正在尝试显示数据,INSTEAD您正在显示 python表示(如果此对象)。
所以它包含像u,L等的元数据。 如果你想以你想要的方式显示数据,你应该编写一个代码来处理它。
例如:
for row in cur.fetchall():
print u"'{row[0]}', '{row[1]}', '{row[2]}', '{row[3]}', '{row[4]}'".format(row=row)
所以它看起来像
'1', '2', '3', '4'
'1', '2', '3', '4'
'1', '2', '3', '4'
但是......正如我所看到的,你使结构看起来像CSV文件(以逗号分隔的值),对吗?那么,也许,您应该阅读有关csv python模块的内容吗?