2017-04-11 1 views
2

Ich habe Dateien in einem Ordner gespeichert. Ich lese die Dateien in der Liste und splitte dann mit '_', bekomme aber kein korrektes Ergebnis.wie Datum und Dateiname von Listenelementen aufgeteilt werden und nur Dateiname gedruckt werden

ich unten Code versucht:

mylist = ['2014330_13252_Event.txt', '2014330_13252_Location.txt', 
    '2014330_13252_Place_name.txt', '2014330_13252_Place_add.txt', 
    '2014330_13252_Place_pin.txt'] 
    testlist = [i.split('_')[2] for i in mylist] 
    print(testlist) 

Ausgang ist:

testlist = ['Event.txt', 'Location.txt', 'Place', 'Place', 'Place'] 

I ausgegeben werden soll:

testlist = ['Event.txt', 'Location.txt', 'Place_name.txt', 'Place_add.txt', 'Place_pin.txt' ] 
+2

'i.split ('_', 2) [2]'. Wenn Ihre Dateinamen '_' enthalten, enthalten die Dateinamen selbst ein gültiges Trennzeichen. Eine einfache Problemumgehung besteht darin, die Anzahl der Teile zu begrenzen. – dhke

Antwort

2

Sie re Modul verwenden können.

>>> mylist = ['2014330_13252_Event.txt', '2014330_13252_Location.txt', 
...  '2014330_13252_Place_name.txt', '2014330_13252_Place_add.txt', 
...  '2014330_13252_Place_pin.txt'] 
>>> 
>>> import re 

>>> [re.match(r'(?:\d+_)+(.+)', i).group(1) for i in mylist] 
['Event.txt', 'Location.txt', 'Place_name.txt', 'Place_add.txt', 'Place_pin.txt'] 
>>> 

Eine Erklärung, wenn Sie für eine Pflege: (?:\d+_)+ ist eine nicht-einfangende Gruppe, (?:), von einer oder mehreren Ziffern, \d+, ein Unterstrich folgen, _, und wir machen eine oder mehrere von diesen Spielen (das nachlaufende + Zeichen). (.+) ist eine Erfassungsgruppe, (), aus einem oder mehreren Nicht-Zeilenumbruchzeichen, .+. Setzen Sie sie zusammen in re.match, und wir werfen eine oder mehrere Gruppen von (Zahlen gefolgt von einem Unterstrich) weg, dann passen wir an, was übrig ist und setzen Sie es in eine Gruppe und spucken Sie schließlich diese Gruppe mit .group(1) aus.

0

Sie können etwas tun:

mylist = ['2014330_13252_Event.txt', '2014330_13252_Location.txt', 
    '2014330_13252_Place_name.txt', '2014330_13252_Place_add.txt', 
    '2014330_13252_Place_pin.txt'] 

res = [] 
for i in mylist: 
    res.append(i.split("_",2)[2]) 
print res 

Ausgabe

['Event.txt', 'Location.txt', 'Place_name.txt', 'Place_add.txt', 'Place_pin.txt'] 
Verwandte Themen