首页 > 解决方案 > 检查项目符号是否在列表中

问题描述

因此,我试图通过使用 for 循环遍历它来检查项目符号点是否是列表中项目的一部分。我知道,至少在正则表达式中,一个要点被定义为\u2022. 但是不知道这个怎么用。我目前拥有但显然不起作用的是这样的。

list = ['changing. • 5.0 oz.', 'hello', 'dfd','df', 'changing. • 5.0 oz.']
for items in list:
     if "\u2022" in items:
        print('yay')

提前致谢!

标签: pythonlist

解决方案


Python 3 中,您的代码可以正常工作,因为 UTF-8 是默认的源代码编码。如果您要经常使用 Unicode,请考虑切换到 Python 3。

Python 2 中,默认将文字字符串视为字节序列,因此您必须通过在它们前面加上前缀来显式声明哪些字符串是 Unicode u

首先,将您的源代码编码设置为 UTF-8。

# -*- coding: utf-8 -*-

然后告诉 Python 将这些字符串编码为 Unicode。否则它们将被视为单个字节,这将导致奇怪的事情,例如 Python 认为第一个字符串的长度为 21 而不是 19。

print len(u'changing. • 5.0 oz.')    # 19 characters
print len('changing. • 5.0 oz.')     # 21 bytes

这是因为Unicode 代码点U+02022 BULLET是 UTF-8 编码为三个字节e2 80 a2。第一个将其视为单个字符,第二个将其视为三个字节。

最后,将您要搜索的字符编码为 Unicode。要么u'\u2022'要么u'•'

#!/usr/bin/env python
# -*- coding: utf-8 -*-

list = [u'changing. • 5.0 oz.', u'hello', u'dfd', u'df', u'changing. • 5.0 oz.']
for item in list:
    if u'•' in item:
        print('yay')

真正的代码可能不会使用常量字符串,因此您必须确保其中的任何内容都list被编码为 UTF-8。


推荐阅读