정규식 접근 방식이 정상적으로 작동합니다. 다음은 반복적 인 접근법입니다. 인쇄 문을 주석 처리를 제거하면 몇 가지 결과가 나타납니다.
는
%%file foo.txt
abstract 233:1 253:1 329:2 1087:2 1272:1
game 64:1 99:1 206:1 595:1
direct 50:1 69:1 1100:1 1765:1 2147:1 3160:1
코드
import itertools as it
with open("foo.txt") as f:
lines = f.readlines()
#print(lines)
pred = lambda x: x.isalpha()
count = 0
for line in lines:
line = line.strip("\n")
line = "".join(it.dropwhile(pred, line))
pairs = line.strip().split(" ")
#print(pairs)
count += len(pairs)
count
# 15
세부
먼저 우리는,164,619,132 사용 감안할 10 문은 안전하게 파일을 열고 닫는 관용구입니다. 그런 다음 파일을 readlines()
을 통해 줄 바꿈합니다. 우리는 나중에 사용할 조건부 함수 (또는 술어)를 정의합니다. 람다 표현은 편의를 사용하고 다음의 함수에 상당한다 :
def pred(x):
return x.isaplha()
우리가
count
변수를 초기화하고 반복하는 각 행을 시작한다. 모든 줄에는 줄 바꿈 문자
\n
이있을 수 있으므로 먼저 줄을
dropwhile
으로 보내기 전에 먼저
strip()
문자를 빼십시오.
dropwhile
은 특별한 itertools 반복기입니다. 행을 반복 할 때, 술어를 만족시키는 선행 문자는 술어에 실패한 첫 x 째. 자에 도달 할 때까지 v립니다. 다른 말로하면, 시작 부분의 모든 문자는 첫 번째 비 문자가 발견 될 때까지 삭제됩니다 (이 경우는 공백 임). 우리는 새 줄을 다시 청소하고 선행 공백을 제거하고 나머지 문자열은 이고 목록은 pairs
입니다.
마지막으로 각 쌍의 줄 길이는 count
에 점진적으로 추가됩니다. 최종 계수는 모든 길이의 합계가 pairs
입니다.
가
컴퓨터를 끄고 종이와 연필을 준비하는 것이 좋습니다. 단어 **로 설명하십시오 ** 어떻게이 문제를 손으로 해결할 수 있을까요? 파이썬 구문에 대해 걱정하지 마십시오.솔루션에 필요한 단계 만 작성하면됩니다. –