python - Python Regex 对象是否具有自省方法/属性?
问题描述
我在整理这段代码时遇到了令人沮丧的事情。我有一个包含 csv 和其他文件类型的 zip 文件。我想处理 csv 并排除不带 .csv 后缀的内容。
我在一组只有 1 个非 csv 文件的情况下不断收到此错误消息:
Traceback (most recent call last):
File "test.py", line 41, in <module>
check = p.search(x).group(0) if (type(p.search(x)) != 'NoneType') else 'None'
AttributeError: 'NoneType' object has no attribute 'group'
因为我无法检查正则表达式对象以查看它返回的内容,所以我只能查看错误消息。我对python(6个月)还比较陌生,所以我不知道这是新手错误还是什么。
编码:
p = re.compile('\.csv')
... processing using ZipFile ...
# prepare selections for csv
check = p.search(x).group(0) if (type(p.search(x)) != 'NoneType') else 'None'
if (check):
#print(x + " " + str(p.search(x).group()))
table = p.sub('', x)
print(" ======= " + table + " ======= ")
with zf.open(x) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
count = count + 1
#print(row)
print(x + " has " + Fore.RED + str(count) + Style.RESET_ALL + " rows of data")
else:
print(x + " is not a csv file, so not processing.\n")
一切正常,除了最后一个文件,它是一个 pdf,描述了内容。这是最后一个文件,所以我可以忽略它,但我担心在正在处理的存档中可能具有更高级别的非 csv 的文件。
当我明确指示忽略非 csv 文件时,我担心为什么逻辑会给我带来不匹配的麻烦。
解决方案
改变
check = p.search(x).group(0) if (type(p.search(x)) != 'NoneType') else 'None'
至
check = p.search(x).group(0) if (p.search(x) != None) else None
这会产生预期/期望的结果。
谢谢@user2357112-supports-monica
我的意思是,我知道我做错的事情是错误的,显然我忘记了。
推荐阅读
- spring - Spring MVC java注解配置流程
- c# - C ++多个接口仅在返回类型上有所不同?
- oracle - 如果删除的行的 datefin 字段未超过一年,我创建了一个触发器以引发错误
- java - 如何在 Java 8 中的两个流之间进行搜索
- c# - 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令
- mysql - 无法使用 Aurora MySQL 本机函数调用 Lambda 函数
- node.js - 如何解决 Socket.io 客户端等待发射消息直到完成运行发射?
- android-studio - 推荐使用哪个 Android Studio 3.3 Build 变体?
- python - dask可以读取块中的压缩文件吗?
- android - 如何从android中的活动刷新片段列表