2017-11-30 14 views
0

나는 pdftools을 사용하여 일부 pdf 문서를 txt로 변환했습니다. 이gsub를 사용하여 대소 문자가 구별 된 여러 공백과 점선을 수정하는 방법은 무엇입니까?

REPÚBLICA DE CHILE   PADRON ELECTORAL AUDITADO  ELECCIONES PRESIDENCIAL, PARLAMENTARIAS y de CONSEJEROS REGIONALES 2017    REGISTROS:  2.421 
SERVICIO ELECTORAL   REGIÓN  : ARICA Y PARINACOTA         COMUNA: GENERAL LAGOS         PÁGINA 1 de 38 
          PROVINCIA : PARINACOTA 
NOMBRE              C.IDENTIDAD SEXO DOMICILIO ELECTORAL        CIRCUNSCRIPCIÓN     MESA 
AGUILERA SIMPERTIGUE JUDITH ALEJANDRA       13.638.826-6 MUJ PUEBLO DE TACORA S N VISVIRI     GENERAL LAGOS      4M 
AGUILERA ZENTENO PATRICIA ALEJANDRA       16.223.938-4 MUJ PUEBLO DE GUACOLLO S N CERCANO A    GENERAL LAGOS      5M 
AGUIRRE CHOQUE MARCOS JULIO         15.000.385-7 VAR CIRCUNSCRIPCION 
                       CALLE TORREALBA DE VISVIRI 
                           CASA N° 4 PUEBLO DE VISVIRI GENERAL LAGOS      7V 

가 그래서 문제는이 청소와 형식의 TSV로 변환하고 있어요 (그렇게 나쁘지 않아) 출력의 일부입니다

test = read_lines("file.txt") 

test2 = test[!grepl("REP\u00daBLICA",test)] 
test2 = test2[!grepl("SERVICIO",test2)] 
test2 = test2[!grepl("NOMBRE",test2)] 
test2 = test2[!grepl("PROVINCIA",test2)] 

test2 = gsub("\\.", "", test2) 
test2 = gsub("(?<=[\\s])\\s*|^\\s+|\\s+$", "", test2, perl=TRUE) 

출력은 다음과 같습니다

ABRIGO PIZARRO PATRICIO ESTEBAN 16024716-9 VAR PUEB ALCERRECA GENERAL LAGOS 5V 
ABURTO VELASCO ESTHER MARISOL 13005517-6 MUJ VILLA INDUSTRIAL GENERAL LAGOS 2M 
ACEVEDO MONTT SEBASTIAN ANDRES 17829470-9 VAR CALLE RAFAEL TORREALBA N° 3 PUEBLO DE VISVIRI GENERAL LAGOS 3V 
ACHILLO BLAS ADOLFO ARTURO 13008044-8 VAR VISURI GENERAL LAGOS 7V 

나는 어떤 글을 읽은 나는 구현하는 방법을 잘 모르겠어요 :

  1. gsub("(?<=[\\s+])[0-9]", "\t", test2, perl=TRUE)과 같은 것, 여러 공백을 바꾸는 것, 뒤에 번호를 붙여 탭으로 뒤따라 오는 것
  2. 위 예제에서 줄 바꿈을 여러 줄로 시작하는 줄과 같이 이전 줄 끝으로 이동하는 방법 .

고정 (1)과 (2)를 반환 :

ABRIGO PIZARRO PATRICIO ESTEBAN \t 16024716-9 \t VAR \t PUEB ALCERRECA \t GENERAL LAGOS \t 5V 
ABURTO VELASCO ESTHER MARISOL \t 13005517-6 \t MUJ \t VILLA INDUSTRIAL \t GENERAL LAGOS \t 2M 

답변

1

(1) 단어 분할을위한 키 - 단어로 "VAR"와 "MUJ"사용할 수 있습니다

[[1]] 
[1] "AGUILERA SIMPERTIGUE JUDITH ALEJANDRA" "13.638.826-6"       "MUJ"         
[4] "PUEBLO DE TACORA S N VISVIRI"   "GENERAL LAGOS"       "4M" 
어쩌면

없는 가장 우아한 솔루션,하지만 작동하고있는 경우 :

x <- "AGUILERA SIMPERTIGUE JUDITH ALEJANDRA       13.638.826-6 MUJ PUEBLO DE TACORA S N VISVIRI     GENERAL LAGOS      4M" 
strsplit(x, "\\s{2,}|\\s(?=\\bMUJ\\b)|(?<=\\bMUJ\\b)\\s|\\s(?=\\bVAR\\b)|(?<=\\bVAR\\b)\\s", perl = TRUE) 

결과는 실제 핵심 단어를 사용할 수있는 데이터를 수정할 수 있고 고유 한 단어임을 확신 할 수 있습니다.

행이

+0

덕분에 너무 짧은 경우 (2) 쉬운 해결책은 행 길이를 확인하고 값을 이동하는 것입니다! 나는 여전히 공백으로 시작하는 줄을 병합하는 방법을 알아 내려고하고있다. – pachamaltese