首页 > 解决方案 > 如何在使用 re.fullmatch 时修复 'TypeError: |: 'list' 和 'list'' 的不支持的操作数类型

问题描述

我试图检查用户输入是否与理论上卡的正则表达式匹配 [(2-9)|(10)|(AKQJ)][HCSD] 实际上“[(2-9)|(10)|( AKQJ)][HCSD]"

删除并重新键入所有 whitespase commeniting out fullmatch line(没有更多错误) ( 和 [ 的每个组合可能需要删除正则表达式的非或相关部分,将 if 语句从 fullmatch 中分离出来 检查正则表达式的工作方式,但错过了它是一个刺痛它需要引号

#!/usr/bin/python3
from re import fullmatch
def cardCheck(card):
    x = 1
    #if fullmatch([2-9|(10)|AKQJ][HCSD],card) == None:
    if x == 1:
        match = fullmatch((([2-9]|[(10)])|[AKQJ]),card)
        #return "False"
        return False
    else:
        return True
while True:
    card = input("enter the name of the card")
    if card == exit:
        break()
    card = card.upper()
    if cardCheck(card):
        print (card, "is a valid card")

我期望卡,KC、9D、10S 的“是一张有效卡”,预计 11H、0s、23H 没有输出实际输出要么

return False
         ^
SyntaxError: invalid syntax

或者

    match = fullmatch((([2-9]|[(10)])|[AKQJ][HCSD]),card)
TypeError: unsupported operand type(s) for |: 'list' and 'list'
depending on what version i tried

标签: pythonregexpython-3.x

解决方案


正则表达式是一个字符串。它必须用引号引起来:"([2-9]|[(10)])|[AKQJ]". 由于缺少相同的引号,会发生“无效语法”错误。


推荐阅读