regex - 使用 re.sub 清理嵌套列表
问题描述
我有一组需要清理的嵌套列表(深度不超过三个)。一个类似的例子是这样的:
test = [['qte%#', 'EKO*^'], ['eoim&', ['35ni%', 'mmie']]]
我很想运行以下命令:
re.sub(r'[^a-zA-Z\d\[\] ], '', test)
我知道这里的问题是我需要遍历嵌套列表,但是我在保持结构时遇到了麻烦。也许还有一种更简单的方法来解决这个问题。我已经尝试过这种变化:
for a in test:
for b in a:
if isinstance(b, list):
for c in b:
c = re.sub(r'[^a-zA-Z\d\[\] ]', ' ', c)
clean.append(c)
else:
print(b)
b = re.sub(r'[^a-zA-Z\d\[\] ]', ' ', b)
clean.append(b)
解决方案
该脚本将保持列表结构不变 - 只需应用该re.sub
函数:
test = [['qte%#', 'EKO*^'], ['eoim&', ['35ni%', 'mmie']]]
import re
def clean(lst):
if not isinstance(lst, list):
return re.sub(r'[^a-zA-Z\d\[\] ]', '', lst)
return [clean(v) for v in lst]
print( clean(test) )
印刷:
[['qte', 'EKO'], ['eoim', ['35ni', 'mmie']]]
推荐阅读
- java - 如何在 Java、XML 文件中显示具有特定 id 和标签名称以及特定父节点下的节点的值?
- postman - postman获取图片验证码乱码怎么解决
- javascript - 网站源代码中没有的数据来自哪里,如何使用 BeautifulSoup 获取数据?
- php - 如何在表中使用 php 替换时区,我尝试 preg_replace() 但显示错误
- java - 获取 SessionFactory 中的 Spring Data JPA 循环引用
- sql - SQL - 根据条件值添加新列或连接到表
- ruby-on-rails - 如何删除旧版本的捆绑器?
- angular - 只有在我的 launch.json 文件中初始化 dotnet api 之后,是否可以启动我的 Angular SPA?
- jquery - 如何使用 jsPDF 使用 HTML 文档的单个画布生成多页 PDF?
- c# - 如何在运行 dotnet 测试时抑制烦人的“跳过项目运行测试...”消息?