2016-11-29 3 views
0

ich eine Textdatei, die wie folgt aussieht:Python Hinzufügen Raum nach bestimmten Clustern oder Zeichen

AELSLAEM A3LYKM

AELSLAEM A3LYKM WRH7MT3 AELLHH WBRKAETHH

HHL TSMH7 LY

LW SMH7T

MN FD9LK

HHL TTKRM A3LY B

MN FD9LK AHRYD

AHNAE AHRYD MN FD9LK

MN FD9LK AHH7D9R LY

HHL LDYK H7JHZ

AENTDH6R QLYLAE

SAHNTDH6R HHNAE

MTAE YGHLQ AELMT6A3M

MTAE YFTH7 AELMT6A3M ...

Ich möchte einen weißen Raum nach jedem dieser Zeichen hinzuzufügen:

characters = [AH, AE2, UW, EH, AE, B, T3, T, TH, JH, H7, X, D, DH, R, Z, S, SH, S9, D9, T6, DH6, A3, GH, F, Q, K, L, M, N, HH, W, Y, AA, AN, IH, EN, UN, 2]

Die Ausgabe würde also wie folgt aussehen:

AE L S L AE M A3 L Y K M

AE L S L AE M A3 L Y K M W R H7 M T3 AE L L HH W B R K AE T HH

HH L T S M H7 L Y

L W S M H7 T

M N F D9 L K

HH L T T K R M A3 L Y B

M N F D9 L K AH R Y D

Worüber ich am meisten Probleme habe, ist das Hinzufügen von spac e, zum Beispiel, nach D nur, wenn es von einer Ziffer oder H gefolgt ist. Ich möchte dies in Python oder (wenn möglich) vim machen. Könnte jemand dabei helfen. Danke!

+0

dies versuchen, 'für jeden in Zeichen: \t wenn jeder in Inhalt: \t \t contents = contents.replace (jeweils jede +" „)' –

+0

Danke Jaimin .. Hier ist das Skript .. Ich bekomme einen Fehler! 'inp = offen ("input.txt", "r") inp1 = inp.readline() Zeichen = [' AH ',' AE2 ',' UW ',' EH ',' AE ',' B, T3, T, TH, JH \t H7, X, D, DH SH, S9, D9, T6, \t DH6, A3, GH, F, Q, K, L, M, N‘, 'HH', 'W', \t \t 'Y', 'AA', 'aN', 'IH', 'DE', 'UN', '2'] für jeden in Zeichen: \t { \t \t wenn jedes in inp1: inp1 = inp1.replace (jedes, jedes + "") \t \t # INP1 = inp1.replace (Zeichen, Zeichen + ' ') \t \t #print INP1 \t}' – Aloush87

+0

Was ist der Fehler? –

Antwort

0

Sie können versuchen, die Ersetzungsmethode zu verwenden. So gehen Sie durch die Zeichengruppe eine Verwendung für jede Schleife (oder regelmäßige for-Schleife, wenn Sie bevorzugen) und sagen, ersetzen Sie alle Instanzen dieses Zeichen mit dem Charakter und einem Raum:

for chars in characters: 
{ 
    str = str.replace(chars, chars + ' ') 
} 

das ist vorausgesetzt, Sie in der Datei gelesen in eine Variable namens str.

0

Dies funktioniert für mich,

import sys 

try: 
    inp = open("input.txt", "r") 
    inp1 = inp.read() 
    inp.close() 
except Exception, e: 
    print "File error:", e 
    sys.exit(-1) 

print "\nFile Contents:\n", inp1 
characters = ['AH', 'AE2', 'UW', 'EH', 'AE', 'B', 'T3', 'T', 'TH', 'JH', 'H7', 'X', 'D', 'DH', 'R', 'Z', 'S', 'SH', 'S9', 'D9', 'T6', 'DH6', 'A3', 'GH', 'F', 'Q', 'K', 'L', 'M', 'N', 'HH', 'W', 'Y', 'AA', 'AN', 'IH', 'EN', 'UN', '2'] 
for each in characters: 
    if each in inp1: 
     inp1= inp1.replace(each, each + " ") 

print "\nOutput:\n", inp1 
+0

Es mag nicht die Zeile 7 _except Ausnahme, e: _ Ich bekomme ungültige Syntaxfehler ** Ausnahme, e ** – Aloush87

+0

Wenn ich stattdessen 'als e', bekomme ich diesen Fehler _Syntax Fehler: fehlende Klammern im Aufruf von print_ in der nächsten Zeile: ** print "Dateifehler:", e ** – Aloush87

+0

@AliAlshehri das ist, weil Sie Python 3 verwenden, denke ich. Siehe [hier] (http://stackoverflow.com/questions/25445439/what-does-syntaxerror-missing-parentheses-in-call-to-print-mean-in-python) –

Verwandte Themen