Ich habe eine Routine, die durch ein Verzeichnis von Dateien sucht und extrahiert eine Kundennummer aus dem Dateinamen:Python re.search Anomalie
import os
import re
suffix= '.csv'
# For each file in input folder, extract customer number
input_list = os.listdir(path_in)
for input_file in input_list:
fileInput = os.path.join(path_in,input_file)
customer_ID = re.search('custID_(.+?)'+suffix,fileInput).group(1)
print(customer_ID)
Mit suffix='.csv'
und einem Ordner voller csv-Dateien:
avg_hrly_custID_8147611.csv, avg_hrly_custID_8147612.csv, avg_hrly_custID_8147613.csv ...
ich die erwartete Ausgabe:
8147611, 8147612, 8147613...
ABER, mit suffix = '.png'
und eine Falte er von .png Bilddateien ,:
yearly_average_plot_custID_8147611.png, yearly_average_plot_custID_8147612.png, yearly_average_plot_custID_8147613.png ...
ich diesen Fehler:
AttributeError: 'NoneType' object has no attribute 'group'
Warum wird es für die Bilddateien nicht?
Obwohl ich sehe nicht, warum es eine Art und Weise funktionieren würde und nicht die andere (auf https://regex101.com/r/zT7rJ7/1 sie das gleiche tun verhalten), möchten Sie wahrscheinlich '\ .csv' und' \ .png' anstelle von '.csv' und' .png' anpassen, nur um auf der sicheren Seite zu sein. – DeepSpace
Haben Sie versucht, die Zeichenfolge 'fileInput' auszudrucken, um sicherzustellen, dass Sie sich im richtigen Verzeichnis befinden? – Karin
Ihre Regex schlägt fehl, wenn in dem Verzeichnis, dessen Name nicht übereinstimmt, nur eine Datei vorhanden ist. Sind Sie sicher, dass jede Datei mit der Regex übereinstimmt? – BrenBarn