Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Cergath en 29 Mayo 2015, 22:45 pm



Título: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Cergath en 29 Mayo 2015, 22:45 pm
Hola,

Tengo una lista que va así:

Citar
...
...
..
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.
KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE

LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:
....
...
...
..

Necesito colocar el ";" (punto y coma) como se ve en el ejemplo únicamente en los items que están en KW exceptuando el último de ellos, justamente como se ve en el ejemplo. ¿Cómo podría lograrlo?... El problema es que son más de un millón de registros por lo que necesito algo automático :/

Siempre es de KW a LA, y todas esas (que están como KW - (con el guión)) son como categorías, entonces sería hacer el punto y coma para la categoría KW, exceptuando su último item...

Con excel podría hacer algo como =A1&";" pero ciertamente no me sirve porque lo aplicaría a tooodo, y solo necesito KW exceptuando su último... :( no se me ocurre qué hacer, ¿algún consejo?


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Shell Root en 29 Mayo 2015, 22:54 pm
Pues no olvides de que en Excel existe el condicional IF.

Podrías poner como esta el archivo actual unas cuantas lineas, y debajo como quieres que se modifique? No logro comprender lo que quieres,


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Cergath en 29 Mayo 2015, 23:11 pm
Hola,

Muchas gracias por tu consejo @Shell Root, voy a intentarlo,

Respecto al archivo, no puedo adjuntarlo todo, es un .txt de más o menos 50 megas, pero adjunto una pequeñísima porción, y cómo debería quedar (en otro archivo). Yo mismo coloreé las "categorías" en negrilla para que sea más amigable a la vista...

El problema:
https://docs.google.com/document/d/1_OJk-6ugtBSSmWziaVERtx-DduLEyr5nyyDTvwxNzok/edit?usp=sharing

Como debería verse:
https://docs.google.com/document/d/1H1C1awK1N26qghm164qDAMyLDq5KlYMBbxsUT9IaYnA/edit?usp=sharing

Después de la categoría KW siempre va LA, por lo que podría funcionar como punto de referencia...


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Shell Root en 29 Mayo 2015, 23:20 pm
Oka es fácil ya que tiene un patron haré una pequeña macro para que la ejecutes en Excel. Espera un momento.


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Cergath en 29 Mayo 2015, 23:45 pm
@Shell Root , no sé cómo agradecértelo ;-) estoy terminando mi trabajo de tesis en bibliometría y quería sacar un indicador con esos datos... En serio muchas pero muchas gracias por tu ayuda. Ojalá hubiera un botoncito de reputación como mínimo


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Shell Root en 29 Mayo 2015, 23:58 pm
No es nada raro, hasta se puede optimzar, pero nah...
Código
  1. Public Sub PoC()
  2.  
  3.    Dim Row As Integer: Row = 1
  4.    Dim DentroDeKW As Boolean: DentroDeKW = False
  5.  
  6.    Sheets("Hoja1").Select
  7.    Do While Range("A" & Row).Value <> Empty
  8.        If Mid(Range("A" & Row).Value, 1, 2) = "KW" Then
  9.            DentroDeKW = True
  10.        End If
  11.  
  12.        If Mid(Range("A" & Row + 1).Value, 1, 2) = "LA" Then
  13.            DentroDeKW = False
  14.        End If
  15.  
  16.        If DentroDeKW = True Then
  17.            Range("A" & Row).Value = Range("A" & Row).Value & ";"
  18.        End If
  19.  
  20.        Row = Row + 1
  21.    Loop
  22.  
  23. End Sub
  24.  

Resultado:
Código:
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.
KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE
LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:
    Agewall S, 2003, CLIN BIOCHEM, V36, P27, DOI 10.1016/S0009-9120(02)00417-4
    Akhtar S, 2004, CRIT CARE MED, V32, pS126, DOI 10.1097/01.CCM.0000121576.73871.2D
    Akkerhuis KM, 2002, CIRCULATION, V105, P554, DOI 10.1161/hc0502.104278
    Alpert JS, 2000, J AM COLL CARDIOL, V36, P959
    Altinier S, 2001, CLIN CHIM ACTA, V311, P67, DOI 10.1016/S0009-8981(01)00562-9
[Anonymous]
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.
KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE
LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:
    Agewall S, 2003, CLIN BIOCHEM, V36, P27, DOI 10.1016/S0009-9120(02)00417-4
    Akhtar S, 2004, CRIT CARE MED, V32, pS126, DOI 10.1097/01.CCM.0000121576.73871.2D
    Akkerhuis KM, 2002, CIRCULATION, V105, P554, DOI 10.1161/hc0502.104278
    Alpert JS, 2000, J AM COLL CARDIOL, V36, P959
    Altinier S, 2001, CLIN CHIM ACTA, V311, P67, DOI 10.1016/S0009-8981(01)00562-9
[Anonymous]


Título: Re: ¿Cómo extraer texto desde una palabra a otra?
Publicado por: Cergath en 30 Mayo 2015, 00:13 am
Hola,

Muchas gracias!, funciona perfectamente.

Edit: Todo lo que mencioné abajo ya puedo solucionarlo entonces lo he eliminado ;) , el problema que tengo y que no sé cómo resolver es el de desbordamiento :(

Edit 2: Ya pude, reemplacé Integer por Long :D

¡Muchas gracias @Shell Root! eres lo mejor :3