Używam dateutil do parsowania nazw plików obrazu i sortowania według daty. Ponieważ nie wszystkie moje zdjęcia mają metadane, dateutil próbuje zgadnąć, gdzie je umieścić.Python parser dateutil, ignoruj część kodu nie będącą datą
Większość moich zdjęć są w następującym formacie: 2007-09-10_0001.jpg 2007-09-10_0002.jpg etc ...
fileName = os.path.splitext(file)[0]
print("Guesssing date from ", fileName)
try:
dateString = dateParser.parse(file, fuzzy=True)
print("Guessed date", dateString)
year=dateString.year
month = dateString.month
day=dateString.day
except ValueError:
print("Unable to determine date of ", file)
Zwrot jestem coraz to:
('Guesssing date from ', '2007-09-10_00005')
('Unable to determine date of ', '2007-09-10_00005.jpg')
Teraz powinienem być w stanie oderwać wszystko od podkreślenia, ale chciałem, jeśli to możliwe, bardziej niezawodne rozwiązanie, na wypadek gdyby zdjęcia miały inny format. I choć niewyraźne próbowałbym znaleźć dowolną datę w łańcuchu i dopasować do tego, ale najwyraźniej nie działa ...
Czy istnieje prosty sposób, aby parser znaleźć coś, co wygląda jak data i przestać po tym? Jeśli nie, jaki jest najłatwiejszy sposób zmuszenia analizatora do ignorowania wszystkiego po podkreśleniu? Lub sposób definiowania wielu formatów daty z sekcjami ignorowania.
Dzięki!
Czy data przynajmniej jakoś sformatowany? Na przykład "yyyy-mm-dd gdzieś w nazwie pliku"? – mishik
Mam na myśli to, że czasami nie będziesz w stanie odróżnić miesiąca od daty, jeśli formatem daty jest rrrr-dd-mm lub rrrr-mm-dd. – mishik
@mishik Tak, zwykle jest to coś w stylu "2007-09-10" w pełnej nazwie pliku "2007-09-10_001". Jeśli usunę "_001" z ciągu, to rozpozna datę dokładnie w porządku. – deranjer