반응형
Python의 목록 내에서 하위 문자열 찾기
배경:
목록 예:mylist = ['abc123', 'def456', 'ghi789']
다음과 같은 부분 문자열과 일치하는 요소가 있으면 요소를 가져오고 싶다.abc
코드:
sub = 'abc'
print any(sub in mystring for mystring in mylist)
상기의 인쇄물True
목록에 있는 요소 중 하나라도 패턴을 포함하는 경우.
서브스트링과 일치하는 요소를 인쇄하고 싶습니다.그래서 만약 내가 확인한다면'abc'
인쇄만 하고 싶다'abc123'
리스트에서 제외합니다.
print [s for s in list if sub in s]
줄 바꿈으로 구분하려면:
print "\n".join(s for s in list if sub in s)
대소문자를 구분하지 않는 완전한 예:
mylist = ['abc123', 'def456', 'ghi789', 'ABC987', 'aBc654']
sub = 'abc'
print "\n".join(s for s in mylist if sub.lower() in s.lower())
모든 답은 작동하지만 항상 목록 전체를 이동합니다.제가 당신의 질문을 이해한다면, 당신은 첫 번째 시합만 하면 됩니다.따라서 첫 번째 일치를 찾은 경우 목록의 나머지 부분을 고려할 필요가 없습니다.
mylist = ['abc123', 'def456', 'ghi789']
sub = 'abc'
next((s for s in mylist if sub in s), None) # returns 'abc123'
일치가 리스트의 말미에 있는 경우 또는 매우 작은 리스트의 경우, 차이는 없습니다만, 다음의 예를 고려해 주세요.
import timeit
mylist = ['abc123'] + ['xyz123']*1000
sub = 'abc'
timeit.timeit('[s for s in mylist if sub in s]', setup='from __main__ import mylist, sub', number=100000)
# for me 7.949463844299316 with Python 2.7, 8.568840944994008 with Python 3.4
timeit.timeit('next((s for s in mylist if sub in s), None)', setup='from __main__ import mylist, sub', number=100000)
# for me 0.12696599960327148 with Python 2.7, 0.09955992100003641 with Python 3.4
심플한 사용for
루프:
seq = ['abc123', 'def456', 'ghi789']
sub = 'abc'
for text in seq:
if sub in text:
print(text)
수율
abc123
서브를 포함한 모든 요소가 인쇄됩니다.
for s in filter (lambda x: sub in x, list): print (s)
그냥 간단한 정규식을 사용하면 됩니다. 이렇게 하면 됩니다.
import re
old_list = ['abc123', 'def456', 'ghi789']
new_list = [x for x in old_list if re.search('abc', x)]
for item in new_list:
print item
언급URL : https://stackoverflow.com/questions/13779526/finding-a-substring-within-a-list-in-python
반응형
'programing' 카테고리의 다른 글
SQL Server ORDER BY 날짜 및 Null 마지막 (0) | 2023.04.13 |
---|---|
라이브(저장되지 않은) Excel 데이터와 C# 객체 간의 인터페이스를 위한 가장 빠른 방법 (0) | 2023.04.13 |
MVVM Light Toolkit을 사용하여 새 창을 여는 방법 (0) | 2023.04.13 |
Postgres 배열에 값이 있는지 확인합니다. (0) | 2023.04.13 |
체크아웃을 사용하지 않고 Git 브랜치 병합, 업데이트 및 풀 (0) | 2023.04.13 |