2017-11-21 22 views
0

나는 기본적인 텍스트 파일을 받았고 파이썬에서 regex를 사용하여 각 라인의 모든 단어를 가져와 라인 당 단어 수를 인쇄해야합니다.regex를 사용하여 여러 줄 텍스트 파일의 각 줄의 길이를 인쇄하는 방법은 무엇입니까?

텍스트 파일 예 :

I have a dog. 
She is small and cute, 
and likes to play with other dogs. 

예 출력은 :

Line 1: 4 
Line 2: 5 
Line 3: 7 

는 어떤 도움을 주시면 감사하겠습니다!

cat <<EOT | awk '{print NF}' 
> I have a dog. 
> She is small and cute, 
> and likes to play with other dogs. 
> EOT 
4 
5 
7 

NF가 항상 설정하는 AWK 변수입니다 :

+0

지금까지 작성한 코드를 추가하십시오. –

+1

영어로 항상 좋은 것은 아닙니다. _Myers-Briggs_가 한두 단어입니까? _www.website.com_이 한 마디입니까? 단어 수를 계산하는 기계는 원하는만큼 복잡해질 수있는 무언가입니다. 간단하게하기를 원한다면 정규 표현식이 필요하지 않을 것입니다. 그냥'str.split()'입니다. –

+0

공백으로 나눠서,'sentence.split()'- 트릭을해야합니다. – alfasin

답변

1

당신은 라인

with open('input_file_name.txt') as input_file: 
line_number = 1 
for line in input_file.readlines(): 
    print('Line {} : {}'.format(line_number,len(line.split(' ')))) 
    line_number +=1 
0
f = open(path_to_text_file, "r") 
counter = 1 
for line in f.readlines(): # read the file line by line 
    print "Line %d: %d" % (counter, len(line.split(" "))) # counts the spaces, assuming that there is only one space between words. 
    counter += 1 
0

당신은 기본적으로 공백의 실행에 분할하는 AWK를 시도해 볼 수도 분할 시도 할 수 있습니다 현재 레코드의 필드 수입니다.

0

이 매우 직관적 정규식 도움이 될 수 있습니다 :

\b\w+\b 

그것은 단어 경계 사이의 모든 단어 문자와 일치합니다. 거기에 일치하는 항목이 몇 개인지를 계산하면됩니다.

당신이 한 단어로 하이픈 (또는 다른 문자)와 단어를 계산 문자 집합에 -를 추가하려면 :

\b[\w\-]\b 

또는

\b[\w\-'.]\b 

당신은 아이디어를 얻습니다.

+0

이것은 파일의 모든 단어를 가져 오지만, 한 줄 내의 단어를 세어야합니다. 출력에서 줄 끝을 구분할 수있는 것은 없습니다. – Zoey

+0

@Zoey 파일을 한 줄씩 읽는 방법을 모르는 경우 Roopak A Nelliat의 대답을 참조하십시오. – Sweeper