Ich habe einige Dateinamen in einer Liste, die unterschiedliche Erweiterungen haben.
file_name_list = ['ABDCD Pattern Raw Data 1.4.2016.xlsx',
'Jack Raw Data 1.2.2016.xlsx',
'Farmers holdings 1.1.2016.xlsx',
'Anne Raw Data 1.3.2016.csv',
'120 Brewers 5-2-2018.txt']
Ich möchte nur die Daten aus diesen Dateinamen entfernen und sie einer neuen Liste hinzufügen. Genau wie dieser,
['abdcd pattern raw data.xlsx',
'jack raw data.xlsx',
'farmers holdings.xlsx',
'anne raw data.csv',
'120 brewers.txt']
Ich habe folgendes mit diesem Beitrag müde gemacht , ich habe die Zahlen entfernt, aber nicht wie ich will.
import re
OutputList = []
for i in file_name_list:
lower_character = i.lower()
OutputList.append(re.sub('[0-9.-]', '', lower_character))
Ausgabe,
['abdcd pattern raw data xlsx',
'jack raw data xlsx',
'farmers holdings xlsx',
'anne raw data csv',
' brewers txt']
Wenn Sie genau hinschauen, dauerte es 120
von 120 Brewers
. Wie kann ich erreichen, was ich will? Ich benutze python 3
. Anregungen wäre nett.
Wenn Sie auch die Daten beibehalten möchten, die Sie re.split()
stattdessen verwenden müssen re.sub()
, werden die Zeichenfolgen entfernt.
Sie können basierend auf dem neuesten Leerzeichen oder Punkt in der Zeichenfolge wie folgt aufteilen:
In [59]: for x in file_name_list:
...: a, date , c = re.split(r'(?=(?:(?:\.[^.]*| [^ ]*))$)', x)
...: se.append(a + c)
...: dates.append(date.strip())
...:
...:
In [60]: se
Out[60]:
['ABDCD Pattern Raw Data.xlsx',
'Jack Raw Data.xlsx',
'Farmers holdings.xlsx',
'Anne Raw Data.csv',
'120 Brewers.txt']
In [61]: dates
Out[61]: ['1.4.2016', '1.2.2016', '1.1.2016', '1.3.2016', '5-2-2018']
Und wenn Sie nur die Daten entfernen möchten
In [65]: [re.sub(r' (?:\d+[.-]){2}\d+','', x) for x in file_name_list]
Out[65]:
['ABDCD Pattern Raw Data.xlsx',
'Jack Raw Data.xlsx',
'Farmers holdings.xlsx',
'Anne Raw Data.csv',
'120 Brewers.txt']
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen