在Python中使用哪种编码来读取意大利语文本?

2024-05-08 19:26:12 发布

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

我正在使用Python工具开发visualstudio,并阅读了一些用意大利语编写的文件。尝试过iso-8859-1、iso-8859-2、utf-8、utf-8-sig。记事本++以不带BOM的UTF-8格式打开文件。在

content = fp.read()
words = content.decode("utf-8-sig").lower().split()
for w in words:
    p=''
    cur.execute('SELECT word FROM  multiwordnet.italian_lemma l, multiwordnet.italian_synset s where l.id = s.id and l.lemma="%s"' % w) 

导致崩溃的字符串是C'è。(读取为"c\'\xe3\xa8"

使用chardet没有帮助

^{pr2}$

Tags: 文件工具idisocontentbomutfsig
1条回答
网友
1楼 · 发布于 2024-05-08 19:26:12

假设数据库的绑定变量样式是format。。。在

content = fp.read()
words = content.decode("utf-8-sig").lower().split()
for w in words:
    p=''
    cur.execute('SELECT word FROM ' +
                'multiwordnet.italian_lemma l, ' +
                'multiwordnet.italian_synset s ' +
                'where l.id = s.id and l.lemma=%s', w)

注意,我们没有在SQL字符串和传入的变量之间使用%运算符,也没有在%s周围加上内引号;%s是一个占位符,用来标识在SQL中该单词应该被替换的位置,我们将作为单独的参数传递要替换占位符的值。遵循这种做法不仅可以防止您需要处理编码问题(如果您的参数是作为Python Unicode字符串传递的,那么数据库绑定负责从那里获取它),而且还可以防止SQL injection安全漏洞。在

Python的其他数据库库可能使用不同的占位符样式;请阅读文档或检查模块级别的paramstyle常量。(对于qmark您的占位符应该是?;对于numeric,它应该是冒号前缀的数字(:1代表第一个参数,:2代表第二个参数,依此类推)

相关问题 更多 >