2014-06-10 7 views
-5

J'ai un fichier texte contenant un grand nombre de lignes comme ceci.Extraire les noms des variables du fichier

NOTE: Variable Variable_S1 already exists on file D1.D, using Var_S8 instead. 
NOTE: The variable name more_than_eight_letters_m has been truncated to ratio_s. 
NOTE: Variable ratio_s already exists on file D1.D, using Var_S9 instead. 

Je suis en train de créer une liste contenant 2 colonnes:

Variable_S1 Var_S8 
more_than_eight_letters Var_S9 

Quelqu'un peut-il me dire comment faire en utilisant sed ou python ou même R?

+3

Il On dirait que vous voulez que nous écrivions du code pour vous. Bien que de nombreux utilisateurs soient prêts à produire du code pour un codeur en détresse, ils ne font généralement que contribuer lorsque l'affiche a déjà tenté de résoudre le problème par eux-mêmes. Une bonne façon de démontrer cet effort est d'inclure le code que vous avez écrit jusqu'à présent, exemple d'entrée (s'il y en a), la sortie attendue, et la sortie que vous obtenez réellement (sortie de la console, traces de pile, erreurs du compilateur en vigueur). Plus vous fournissez de détails, plus vous aurez de chances de recevoir des réponses. –

+0

Vous voulez supprimer tous les mots sans traits de soulignement, puis combiner les lignes où le deuxième mot d'une ligne est le même que le premier mot de l'autre, est-ce exact? – Beta

Répondre

1

Je ne sais pas sed ou R, mais en Python:

>>> import re 
>>> i = """NOTE: Variable Variable_S1 already exists on file D1.D, using Var_S8 instead. 
NOTE: The variable name more_than_eight_letters_m has been truncated to ratio_s. 
NOTE: Variable ratio_s already exists on file D1.D, using Var_S9 instead.""" 
>>> print(re.findall(r'(\w+_\w+)', i)) 
['Variable_S1', 'Var_S8', 'more_than_eight_letters_m', 'ratio_s', 'ratio_s', 'Var_S9'] 

Voici une version améliorée, ce qui vous donnera l'ensemble des variables pour chaque ligne:

>>> print([re.findall(r'(\w+_\w+)', line) for line in i.split('\n')]) 
[['Variable_S1', 'Var_S8'], 
['more_than_eight_letters_m', 'ratio_s'], 
['ratio_s', 'Var_S9']] 
Questions connexes