2017-12-23 5 views
-3

나는 파일을 읽고 그것에 변수 "input_kws"를 지정하고 있습니다. "input_kws"의특정 문자열을 기반으로하는 목록의 서브 세트

input_kws = open('words.txt','r') 

내용은 다음과 같습니다

baseball 
basketball 
football 
tennis 
boxing 
volleyball 

은 단순히 "볼"를 포함하는 단어 만 포함 된 새 목록을 만들려고합니다.

+2

지금까지 무슨 짓을 한거야? 귀하의 접근 방식과 귀하가 정확히 붙어있는 위치를 보여주십시오. – lkriener

답변

3

'볼'이 각 문자열에 있는지 확인하십시오.

input_kws= 'baseball basketball football tennis'.split() 

ball_sports = [word for word in input_kws if 'ball' in word] 
>>>['baseball', 'basketball', 'football'] 

양자 택일로, 당신은 동일한 결과

f = filter(lambda x: 'ball' in x, input_kws) #Returns a generator 
ball_sports = list(f) 

그리고 발전기가 일하지 않으면, 당신은 루프

ball_sports = [] 
for sport in input_kws: 
    if 'ball' in sport: 
     ball_sports.append(sport) 

이를 함께 할 항상 수를 달성하기 위해 filter을 사용할 수 있습니다 서브 스트링 '공'이있는 다른 스포츠가 목록에있는 경우 실패합니다. 예

input_kws= 'baseball basketball football tennis balloon'.split() 
f = filter(lambda x: 'ball' in x, input_kws) #Returns a generator 
ball_sports = list(f) 
>>>['baseball', 'basketball', 'football','balloon'] 
0

사용은 문자열에 공을 찾는 정규식을 사용할 수 있습니다

import re 

for line in open(r"words.txt","r"): 
    if re.findall(r"ball",line) ==["ball"]: 
     print(line) 

baseball 

basketball 

football 

volleyball 
+0

완벽하게 작동합니다. 다들 감사 해요. – nia4life

관련 문제