为什么这些看起来相同的字符串会被代码区别对待?

2024-06-08 08:33:27 发布

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

我正在使用Python创建一些文件,其中包含unicode文本,并将内容保存在sqlite3db中。稍后,我获取这些文件并进行一些更改。问题是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。你知道吗


Tags: 文件字符串文本内容typeunicodeam例子
1条回答
网友
1楼 · 发布于 2024-06-08 08:33:27

充分展示了@Blorgbeard的答案。你知道吗

import unicodedata

a = "é"
b = "é"

print(len(a)) # 1
print(len(b)) # 2

print(len(unicodedata.normalize("NFC", a))) # 1
print(len(unicodedata.normalize("NFC", b))) # 1

print(len(unicodedata.normalize("NFD", a))) # 2
print(len(unicodedata.normalize("NFD", b))) # 2

这个问题可能会被标记为一个重复,让这个留在这里以防万一。你知道吗

相关问题 更多 >