2013-08-11 4 views
4

잘 분석되고 여러 단락으로 된 문서 (모든 단락을 \ n \ n으로 구분하고 문장을 "."로 구분)을 원하는 목록으로 만들었습니다. 문서 내 단락 번호를 나타내는 숫자와 함께 문장으로 나눌 수 있습니다. 예를 들어, (이 단락) 입력은 다음과 같습니다 여러 단락 문서를 단락 번호가 지정된 문장으로 분할

First sentence of the 1st paragraph. Second sentence of the 1st paragraph. \n\n 

First sentence of the 2nd paragraph. Second sentence of the 2nd paragraph. \n\n 

이상적으로 출력해야한다 :

1 First sentence of the 1st paragraph. 

1 Second sentence of the 1st paragraph. 

2 First sentence of the 2nd paragraph. 

2 Second sentence of the 2nd paragraph. 

나는 문장으로 문서를 분할 할 수 있습니다 펄의 링구아 :: 문장 패키지 알고 있어요 . 그러나 단락 번호 매기기와 호환되지 않습니다. 따라서 나는 위의 (문서에는 약어가 포함되어 있지 않습니다)를 달성 할 수있는 다른 방법이 있는지 궁금합니다. 어떤 도움이라도 대단히 감사합니다. 감사! 당신이 기간 .에 의존하는 경우

+0

분할 한 번에 단락이 필요한 것을 얻을이 모듈에서 원래의 출력을 조작 할 수있는 옵션이라고 생각 다음에 현재 단락 번호를 추가 각 문장의 앞. – tripleee

답변

2

당신이 Lingua::Sentences 언급 한 바와 같이, 나는 그것이 조금 당신이

use Lingua::Sentence; 

my @paragraphs = split /\n{2,}/, $splitter->split($text); 

foreach my $index (0..$#paragraphs) { 
    my $paragraph = join "\n\n", map { $index+1 . " $_" } 
     split /\n/, $paragraphs[$index]; 
    print "$paragraph\n\n"; 
} 
+0

감사! 실제로 문서의 각 단락은 한 줄에 있으므로 대신 줄 번호를 출력하는 방법이 있습니까? – user735276

+0

* line number *가 무슨 뜻인지 모르겠다. 이 코드 스 니펫은 설명 된 것과 동일한 결과를 제공합니다. – Alec

+0

작은 조정으로 잘 작동했습니다. 감사! – user735276

5

구분되는, 당신은이 작업을 수행 할 수 있습니다

perl -00 -nlwe 'print qq($. $_) for split /(?<=\.)/' yourfile.txt 

설명 :

  • -00 단락 모드 빈 문자열로 입력 레코드 분리를 설정합니다 .
  • -l은 출력 레코드 분리 문자를 입력 레코드 분리 문자로 설정합니다.이 경우 입력 기록 분리 기호는 두 개의 개행 문자로 변환됩니다.

다음으로 표제어 어설 션으로 마침표를 나누고 줄 번호 앞에 문장을 인쇄합니다.

+0

도움을 주셔서 감사합니다. – user735276