2017-09-14 1 views
1

J'essaie d'extraire des données à partir d'un fichier, mais les données ne viennent pas correctement parce que non. des espaces sont différents à différents endroits.supprimer l'espace dans les données de la ligne de fichier

Ex: Les fichiers ont ci-dessous donné des données. ici chaque mot ont plus d'un espace (Notez que ce n'est pas la chaîne, ses données de fichiers et im en utilisant readlines())

08:30:34 Lane 2 Typ 1 Prt 1 Tid  2 Amt  4.99 Mode 0 Tndr 1 Oper  130 Tran  74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 

Je veux sortie comme ceci:

08:30:34 Lane 2 Typ 1 Prt 1 Tid 2 Amt 4.99 Mode 0 Tndr 1 Oper 130 Tran 74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1. 

Merci

+1

double possible de [Remplacer tous les multispaces avec des espaces simples] (https://stackoverflow.com/questions/27022052/replacing-all-multispaces-with-single-spaces) – tk421

Répondre

2
vous

peut utiliser regex:

>>> s="08:30:34 Lane 2 Typ 1 Prt 1 Tid  2 Amt  4.99 Mode 0 Tndr 1 Oper  130 Tran  74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 " 
>>> import re 
>>> re.sub(' +',' ',s) 
'08:30:34 Lane 2 Typ 1 Prt 1 Tid 2 Amt 4.99 Mode 0 Tndr 1 Oper 130 Tran 74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 ' 

si vous voulez garder une liste de readlines():

>>> f = open('yourfile.txt','r') 
>>> result=[re.sub(' +',' ',i) for i in f.readlines()] 
+0

merci de répondre, je suis nouveau en python et j'ai essayé cela mais il ne fonctionne que pour la chaîne. J'utilise le code ci-dessous f = ouvert (sys.argv [1], 'r') lignes = f.readlines() f.close() cette donnée est écrite dans le fichier et je lis ce fichier et je vouloir supprimer l'espace supplémentaire du fichier .. dans chaque ligne –

+0

'readlines()' retourner une liste de chaque ligne de votre fichier, vous pouvez parcourir la liste et appliquer la méthode regex (voir Modifier) ​​ – Dadep

+0

merci Dadep son fonctionnement –

0

Essayez ceci:

s = 'aaa bb ccccc d f ggggg' 
s = ' '.join(s.split()) 

Si vous lisez à partir d'un fichier avec readline():

with open('bar.txt', 'r') as f: 
    while True: 
     s = f.readline() 
     s = ' '.join(s.split()) 
     if not s: 
      break 
     print(s) 
+0

merci de répondre, je suis nouveau en python et j'ai essayé cela mais il ne fonctionne que pour la chaîne. J'utilise le code ci-dessous f = ouvert (sys.argv [1], 'r') lignes = f.readlines() f.close() cette donnée est écrite dans le fichier et je lis ce fichier et je voulez supprimer l'espace supplémentaire du fichier .. dans chaque ligne .. –

+0

Vérifiez ma réponse éditée. – prometeu