我有一个包含词典的列表列表。 我想从列表中删除列表,如果他们的词典不包含“(atè| atwa | atif)$”等字符模式。例如:如果从列表中删除一行,如果其中的一个单词不包含Python中的某些字符?
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才起作用。 – suripoori