python - unicode正则表达式匹配 - 如何搜索复选标记? ✓

时间:2017-09-07 18:59:23

标签: python regex python-3.x unicode

我正在尝试匹配包含复选标记的行:✓

我正在使用python3。

可以在此处阅读unicode编码:https://codepoints.net/U+2713?lang=en

我试图匹配的行看起来像这样:

✓ Chrome on MAC - MySite.com - version-1

re.match("✓", line)不起作用。 re.match("/u2713", line)也不起作用。

如何确定line是否包含✓?

---更新---

已解决:显然在✓之前有某种不可见的字符,这导致match运算符失败。感谢@NickT和@EricDuminil为我提供了线索。此外,in运营商似乎更容易,更安全,所以我将答案标记为正确。

3 个答案:

答案 0 :(得分:4)

你甚至不需要任何正则表达式。您可以使用in operator

>>> "✓" in "✓ Chrome on MAC - MySite.com - version-1"
True
>>> "✓" in "Chrome on MAC - MySite.com - version-1"
False

如果要在'marks.txt'内显示带复选标记的行,可以写:

with open('marks.txt') as f:
    for line in f:
        if "✓" in line:
            print(line, end='')

答案 1 :(得分:2)

对于万无一失的方法,请按名称指定字符:

>>> line = '✓ Chrome on MAC - MySite.com - version-1'
>>> re.match('\N{CHECK MARK}', line)
<_sre.SRE_Match object; span=(0, 1), match='✓'>

答案 2 :(得分:0)

  

如何确定该行是否包含✓?

示例:

import re


text = '''
123 456 789
✓ 123 456 789
123 456 789
123 456 ✓ 789
123 456 789
'''

for m in re.finditer('^.*✓.*$', text, re.MULTILINE):
    print('line:', m.group(0))

打印:

line: ✓ 123 456 789
line: 123 456 ✓ 789