python - 验证数据时出现 ValueError
问题描述
我正在尝试创建函数,当值hcl
与所需规范正确时返回 True(它在函数的多行注释内)。我想检查的第一件事是该值的长度是否正确(应该是 # + 6 个其他字符),当正确时我会检查所有字符是否都在 af 或 0-9 组中 - 那是我的想法是解决这个问题,但不幸的是有一个
ValueError: substring not found
(当列表的第二个元素进入函数时),我不明白(顺便说一句。一如既往,你有一些推理,当它出现错误时你找不到它,因为对你来说一切都在工作并且这“应该工作”)。
def check_hcl(line):
'''
a # followed by exactly six characters 0-9 or a-f.
'''
print(line[line.index(':')+1], len(line[line.index(':')+2:]))
if line[line.index(':')+1] != '#' or len(line[line.index(':')+2:]) != 6:
return False
else:
return True
list = ['hcl:#866857','#52a9af','#cfa07d','7d3b0c','#cc0362','#a9784']
#false #false
for i in list:
print(check_hcl(i))
解决方案
import re
def check_hcl(line):
if re.match("(.*?)#[a-f0-9]{6}", line):
return True
return False
list = ['hcl:#866857','#52a9af','#cfa07d','7d3b0c','#cc0362','#a9784']
for i in list:
print(check_hcl(i))
输出:
True
True
True
False
True
False
解释:
该模式(.*?)#[a-f0-9]{6}
可以分解为 3 个部分:
(.*?)
匹配任何长度的任何东西,包括长度的子串0
。#
匹配一个'#'
.[a-f0-9]{6}
匹配长度为的字符子a
串和f
数字。0
9
6
感谢@Ian。
推荐阅读
- windows - SSL 访问失败
- reactjs - React 测试问题:编写一个 React 组件,创建一个包含一周 7 天的列表,我们可以在单击它时删除一周中的任意一天?
- docker - Docker - 随机启动一个容器
- c# - 阻止 gtmetrix 网站连接我的网站
- node.js - 当我在苹果 m1 芯片上运行 nvm install 14 时,Clang 命令继续在终端中运行
- python - 用字典中的每个值检查每个值
- flutter - 为什么我的数据没有在实时数据库中使用 Http Patch 更新
- statistics - 为什么调整后的 R2 分数比 R2 分数表现更好?
- sql - 在单个表上递归选择或连接
- java - ElasticSearch 如何聚合“copy_to”字段