gpt4 book ai didi

python - 使用python从sqlite db读取unicode

转载 作者:行者123 更新时间:2023-12-01 06:03:37 25 4
gpt4 key购买 nike

必须检索以 unicode(在数据库中)存储的数据并将其转换为不同的形式。

以下代码片段

def convert(content):
content = content.replace("ஜௌ", "n\[s");
return content;

mydatabase = "database.db"
connection = sqlite3.connect(mydatabase)
cursor = connection.cursor()
query = ''' select unicode_data from table1'''
cursor.execute(query)
for row in cursor.fetchone():
print convert(row)

在转换方法中产生以下错误消息。

exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

如果数据库内容是“ஜௌஜௌஜௌ”,则输出应为“n\[sn\[sn\[s”

文档建议在创建 unicode 字符串时使用忽略或替换来避免错误。

当迭代更改如下时:

for row in cursor.fetchone():
print convert(unicode(row, errors='replace'))

返回

exceptions.TypeError: decoding Unicode is not supported

这通知该行已经是 unicode。

任何能让其发挥作用的线索都值得高度赞赏。提前致谢。

最佳答案

content = content.replace("ஜௌ", "n\[s");

建议你的意思是:

content = content.replace(u'ஜௌ', ur'n\[s');

或者为了安全起见,文件的编码不确定:

content = content.replace(u'\u0B9C\u0BCC', ur'n\[s');

您拥有的内容已经是 Unicode,因此您应该对其进行 Unicode 字符串替换。不带 u"ஜௌ" 是一个字节字符串,表示采用某种编码的字符,具体取决于源文件字符集。 (只有在最明确的情况下,字节字符串才能与 Unicode 字符串顺利配合使用,即 ASCII 字符。)

(r-字符串意味着不必担心包含裸露的反斜杠。)

关于python - 使用python从sqlite db读取unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com