我有一个包含词汇的列表。 我想从列表中删除列表,如果它们的词汇不包含字符模式,例如“(atè|atwa | atif)$。例如:
list = [['blablatè', 'blabla'], ['klak'], ['matwa', 'mat'], ['ma', 'mat'], ['ratif']]
预期结果将是:
[['blablatè', 'blabla'], ['matwa', 'mat'], ['ratif']]
我以为我可以通过一个循环和re.search()来完成,但它不起作用。这是我的密码:
import re
result = [['blablatè', 'blabla'], ['klak'], ['matwa', 'mat'], ['ma', 'mat'], ['ratif']]
rendp = "(atè|atwa|atif)$"
for row in result :
if re.search(rendp, row) == None :
result.remove(row)
joined = '\n'.join(' - '.join(map(str, row)) for row in result)
print(joined)
错误如下:
Traceback (most recent call last):
File "C:\Users\alice\OneDrive\Documents\Visual Studio 2017\Projects\CréoleDB\CréoleDB\CréoleDB.py", line 65, in <module>
if re.search(rendp, row) == None :
File "C:\Users\alice\Anaconda3\lib\re.py", line 182, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
我真的需要一些帮助。非常感谢
您看到的错误是因为您试图在内部列表中搜索模式。re.search只在搜索字符串中的模式时起作用。您可以尝试使用如下嵌套循环:
使用
re.compile()
、regex.search()
和any()
函数:输出:
p.S.请不要将变量名命名为
list
、dict
、str
等,因为它们是内置的Python数据类型当前,您正在将一个列表(
row
)传递给re.search
;但是,只有字符串可以用于模式匹配。请尝试使用以下方法筛选列表:输出:
相关问题 更多 >
编程相关推荐