繁体   English   中英

Python将unicode字符串转换并保存到列表

[英]Python convert and save unicode string to a list

我需要在列表中插入一系列名称(例如'Alam \\ xc3 \\ xa9'),然后我必须将它们保存到SQLite数据库中。

我知道我可以通过提示正确显示这些名称:

print eval(repr(NAME)).decode("utf-8")

但是我必须将它们插入列表中,所以我不能使用打印

不用打印的其他方法吗?

这里有很多误解。

您引用的字符串不是 Unicode。 它是一个字节字符串,以UTF-8编码。

您可以通过解码将其转换为Unicode:

unicode_name = name.decode('utf-8')

当您将unicode_name的值打印到控制台时,您将看到以下两种情况之一:

>>> unicode_name
u'Alam\xe9'
>>> print unicode_name
Alamé

在这里,您可以看到仅键入名称并按Enter键即可显示Unicode代码点的表示形式。 这与键入print repr(unicode_name) 但是,执行print unicode_name打印实际的字符-即在幕后,将其编码为终端的正确编码,然后打印结果。

但这都是无关紧要的,因为Unicode字符串只能在内部表示。 要将其存储在数据库,文件或任何位置中后,就需要对其进行编码。 最有可能选择的编码是UTF-8,这就是它原来的格式。

>>> name
'Alam\xc3\xa9'
>>> print name
Alamé

如您所见,使用名称的原始未解码版本, repr并再次print显示代码和字符。 因此,并不是将其转换为Unicode实际上会使它“真正地”成为正确的字符。

那么,如果要将其存储在数据库中怎么办? 没有。 没事 Sqlite接受UTF-8输入,并将其数据以UTF-8格式存储在磁盘上。 因此,绝对不需要转换即可将name的原始值存储在数据库中。

您是否正在寻找这样的东西?

[n.decode("utf-8") for n in ['Alam\xc3\xa9', 'Alam\xc3\xa9', 'Alam\xc3\xa9']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM