【发布时间】:2019-11-30 23:08:10
【问题描述】:
我正在使用 Python 创建一些带有 unicode 文本的文件,并将内容保存在 sqlite3 DB 中。后来,我获取了这些文件并进行了一些更改。问题是 Python 不认为这两个字符串是相同的,即使它们看起来一样。
这是一个例子:
Str1 : "Copa América 2019"
Str2 : "Copa América 2019"
虽然这两个字符串看起来完全一样,但程序不会将它们视为相同。
我在其他语言(韩语、日语等)中也看到了相同的行为,因此在这里选择了法语示例,因为它对我来说更容易阅读。韩文/日文我根据字符的外观匹配字符。
我也在网上进行了比较(例如https://www.quickdiff.com/)并发现了相同的结果...所以它不是特定于 Python 的,而是其他一些问题。
我可以对字符串执行什么操作,以便代码将这两个字符串视为相同?
尝试单独显式转换为 str / utf-8 编码,但无济于事。
a = "Copa América 2019"
b = "Copa América 2019"
if a == b:
print 'y'
type(a)
<type 'str'>
type(b)
<type 'str'>
我希望这些字符串的字符串比较结果为 True。
【问题讨论】:
-
Unicode 可以用不同的方式编码像
é这样的字符。检查len(a)和len(b)。您可以尝试规范化两个字符串:stackoverflow.com/questions/16467479/normalizing-unicode -
谢谢。是的,它们是不同的。 len(a) = 18; len(b) = 19。我无法理解的是如何解决这个问题。我试过 b1=b.encode('utf-8') 和 a1=a.encode('utf-8'),但它们也不同(当然,因为它们是不同的字符)。
-
'Copa Ame\xcc\x81rica 2019'与'Copa Am\xc3\xa9rica 2019'
标签: python string unicode utf-8 compare