2014-02-08 2 views
0

그래서 "listb.txt"에서 단어를 선택하는 코드의 일부입니다. 그 문제의 두 번째 부분입니다. 첫 번째 문자를 기준으로 단어를 선택할 수 있지만 "and"라고 말하면 바로 마지막 문자가 불평을합니다. 예 : "mthr"이며 Mr을 찾아야합니다. Num은 파일의 일치 항목을 찾는 줄입니다./2는 파일의 단어 사이에 공백이 있으므로 올바른 단어를 선택하기 때문입니다.파이썬. 단어의 첫 글자와 마지막 글자를 일치 시키십시오.

이것은 필요한 모든 정보 여야합니다 ... 누구에게 아이디어가 있습니까? 감사합니다.

with open('listb.txt','r') as f: 
    x = 1 
    for line in f: 
     if x == num/2 and len(sms_word) <= len(line) < 2*(len(sms_word)) and sms_word[0] == line[0]: 
      print line 
      break 
     x += 1      
+0

'if' 줄이 너무 길어요! – ThiefMaster

+0

어떻게 든 응축해야하나요? 그것이 왜 혼란스러워지는 이유일까요? @ ThiefMaster – escGoat007

+2

샘플 입력 및 예상 출력을 게시하십시오 – inspectorG4dget

답변

2

첫째, 당신이 enumerate 사용하여 코드를 단순화 할 수 있습니다

for x, line in enumerate(f, 1): 

을 둘째, 당신은 문자열 테스트 startswithendswith를 사용할 수 있습니다 마지막으로

if (x == num/2 and 
    len(sms_word) <= len(line) < 2 * len(sms_word) and 
    line.startswith(sms_word[0]) and 
    line.endswith(sms_word[-1])): 

를 파일에서 선 것이다 끝에 '\n'이라는 줄 바꿈 문자가 있으므로 먼저 strip()을 먼저 입력하십시오.

line = line.strip() 
관련 문제