나는 어휘집을 포함하는 목록의 목록을 가지고 있습니다. "(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는 문자열에서 패턴을 검색 할 때만 작동합니다. – suripoori