Python

2017-04-26 15 views
1
Klammern und String Anführungszeichen aus dem Array entfernen
myArray = [] 
textFile = open("file.txt") 
lines = textFile.readlines() 
for line in lines: 
    myArray.append(line.split(" ")) 
print (myArray) 

Dieser Code gibtPython

[['a\n'], ['b\n'], ['c\n'], ['d']] 

Was würde ich es Ausgabe machen tun müssen, um

a, b, c, d 

Antwort

0

Sie folgendes tun können:

myArray = [[v.strip() for v in x] for x in myArray] 

Dies wird alle Formatierungen entfernen Figuren.

Wenn Sie nicht jedes Zeichen in seinem eigenen Array sein möchten, können Sie dann tun:

myArray = [v[0] for v in myArray] 

zu drucken, dann 'print (',‘.join (arr))

1

Sie fügen Ihrem Ergebnis eine list hinzu (split gibt eine Liste zurück). Darüber hinaus ist die Angabe von "Leerzeichen" für geteilte Zeichen nicht die beste Wahl, da Zeilenvorschub, Wagenrücklauf und doppelte Leerzeichen, die ein leeres Element erzeugen, nicht entfernt werden.

Sie könnten dies tun eine Liste Verständnis verwenden, die Elemente ohne Argument Aufspalten (so die \n natürlich geht weg)

with open("file.txt") as lines: 
    myArray = [x for line in lines for x in line.split()] 

(beachten Sie die with Block so Datei so schnell geschlossen wird, wie verlassen und die Doppel Schleife um die Liste der Listen in eine einzige Liste zu „glätten“: kann in einer Linie)

dann entweder das drucken die Darstellung des Arrays

print (myArray) 
mehr als 1 Element hand

zu erhalten:

['a', 'b', 'c', 'd'] 

oder Sie eine verbundene Zeichenfolge mit Komma + Raum erzeugen

print(", ".join(myArray)) 

Ergebnis:

a, b, c, d 
0

Es scheint, Sie sollten Streifen werden() (trim whitespace) statt split() (erzeugt eine Liste von String-Strängen.

myArray.append(line.strip()) 

Then 'print (arr)' generiert:

['a', 'b', 'c', 'd'] 

drucken 'a, b, c, d' können Sie teilnehmen() verwenden:

print(', '.join(myArray)) 
0

Sie versuchen, etwas ähnliches:

import re 
arr = [['a\n'], ['b\n'], ['c\n'], ['d']] 
arr = (", ".join(repr(e) for e in arr)) 
arr = arr.replace('\\n', '') 
new = re.sub(r'[^a-zA-Z0-9,]+', '', arr) 
print(new) 

Ergebnis:

a,b,c,d