2017-11-30 13 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" を使用することができます

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) 

結果は次のとおりです。

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

多分ない最もエレガントなソリューションが、あなたならば、それは動作し、実際のキーワードを使用できるデータを変更し、それらがユニークであることを保証することができます。

行が

+0

おかげ短すぎる場合(2)簡単な解決策は、行の長さをチェックして、値を上に移動することです!私はまだ空白で始まる行をマージする方法を理解しようとしています – pachamaltese

関連する問題