【问题标题】:Match accentuated strings in lists of string in Python 3在 Python 3 中匹配字符串列表中的重音字符串
【发布时间】:2019-03-30 08:51:29
【问题描述】:

为什么这在 Python 3 中返回 False?还有什么方法可以让它返回 True?

e = "allé.png"
l = ["allé.png"]

print(e in l)

【问题讨论】:

  • 它为我返回True
  • 它为我返回True
  • 它为我返回 'True'。
  • 这很奇怪!
  • 真的很奇怪。虽然可以与编码有关; print(sys.getdefaultencoding())你得到什么输出

标签: python python-3.x list match


【解决方案1】:

在比较 unicode 时,您应该使用 unicodedata 标准化您的数据。如果您打算在一个大列表中搜索,您可以使用map 或列表理解:

import unicodedata
from functools import partial

normalize = partial(unicodedata.normalize, 'NFC')

e = "allé.png"
e = normalize(e)
l = ["allé.png"]
print(e in map(normalize, l))

输出

True

或者作为替代:

print(e in [normalize(s) for s in l])

进一步

  1. What does unicodedata.normalize do in python?
  2. Normalizing Unicode

【讨论】:

  • 非常感谢丹尼尔!
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2013-06-18
  • 1970-01-01
  • 2021-08-25
  • 2021-11-26
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多