python - 如何在使用 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
解决方案
正则表达式是一个字符串。它必须用引号引起来:"([2-9]|[(10)])|[AKQJ]"
. 由于缺少相同的引号,会发生“无效语法”错误。
推荐阅读
- r - postgres 使用滑动窗口生成数组
- j - 将数字插入有序数组的最有效方法是什么?
- linux - 从套接字读取前 128 个字节但将其余字节直接写入文件的有效方法
- javascript - 无法在新选项卡中打开生成的 pdf - 同一窗口
- unicode - 等角 Y 是否有 Unicode 符号?
- javascript - 为什么我的 Javascript 无法在 HTML/CSS 中显示选项卡?
- javascript - 在 javascript/jquery 文件中应用更改的问题
- python - 从下拉列表中的选定选项中刮取文本
- android - 如何从android中的新加密共享首选项打印共享首选项值?
- typescript - TypeScript - 将类型的属性转换为其子类型的类型