当前位置: 首页 > 面试题库 >

Python相同的字符不等于

商昆琦
2023-03-14
问题内容

我的数据库中有文本。我从xhr向我的视图发送一些文本。函数查找找不到某些Unicode字符。

我想使用以下方式找到选定的文本:

text.find(selection)

但有时变量“选择”包含如下字符:

ę  # in xhr unichr(281)

而在变量“文本”中有:

ę  # in db has two chars unichr(101) + unichr(808)

它们只是同一事物的不同形式。.find在这里如何使工作更可靠?


问题答案:

unicodedata.normalize可能对您有帮助。

基本上,如果您对来自db的数据进行规范化,并且将选择规范化为相同的形式,那么使用str.findstr.__contains__(即instr.index和朋友时应该会得到更好的结果。

>>> u1 = chr(281)
>>> u2 = chr(101) + chr(808)
>>> print(u1, u2)
ę ę
>>> u1 == u2
False
>>> unicodedata.normalize('NFC', u2) == u1
True

NFC代表“ 普通形式组合”
形式。您可以在这里阅读有关其他可能形式的一些说明。



 类似资料:
  • 问题内容: 通过搜索发现了类似的问题,但我是一位新的(糟糕的)程序员,无法理解答案。 我有一个.txt文件,其中包含多个字符串,以’-‘分隔。我使用拆分将一些字符串分成变量,其中两个相等,但是在if语句中它们不相等。 这将产生以下结果: 瑞典 瑞典 没有 在两个“ Sweden”字符串之前和之后都有一个空格,并且它们都用大写字母“ S”编写,但不相等吗?我在哪里搞砸了? 问题答案: 最后一个元素包

  • 问题内容: 我有两个字符串,它们看起来都一样: 但是,检查相等性表明它们不是。 我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。 有什么办法可以看到“真实”字符串?任何帮助表示赞赏。 问题答案: 他们是不一样的; using显示了这两个值之间的差异

  • 问题内容: 我正在尝试使用正则表达式来匹配字符串中相同字符的一个或多个实例的序列。 范例: 我能给我一些提示吗? 问题答案: 您可以使用和正则表达式: 关键部分在外部捕获组-中。在这里,我们捕获一个字符,然后通过组号引用该字符:。组号为2,因为我们有一个外部捕获组,其号为1,表示0次或多次。 您也可以通过一个捕获组和解决它:

  • 从韩国网站下载文件时,文件名经常被错误编码/解码,最终变得混乱不堪。我发现通过用iso-8859-1编码并用euc-kr解码,我可以解决这个问题。然而,我有一个新问题,看起来一样的角色实际上是不同的。看看Python shell的下面: 可以使用“iso-8859-1”对第一个字符串进行编码。后者并非如此。因此,问题是: 这两个字符串之间有什么区别 为什么从同一个网站下载的内容会有不同格式的相同字

  • 问题内容: String[] letters = {“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “L”}; 为什么是 Fk呀! 输入AL字母之一绝对不会发生? 问题答案: 字符串是对象。所述通过引用,而不是由它们的内部值进行比较的对象。 有两种解决方案: 使用method来比较两个对象的值。 使用代替。这是原始的,因此可以使用。

  • 我一直在试图解决这个面试问题,它要求洗牌字符串,以便没有两个相邻的字母是相同的,例如, ABCC->ACBC 我想到的方法是 1)遍历输入字符串并将(字母、频率)对存储在某个集合中 2)现在通过拉取频率最高(即>0)的字母来构建一个结果字符串 3)每当我们拉一封信时,更新(减少)频率 4)如果所有字母的频率为零,则返回结果字符串 5)如果只剩下一个频率大于1的字母,则返回错误 我假设是Unicod