Обработка различных результатов из parsedatetime

Я пытаюсь изучить python, проведя последние 15 лет, работая только на Perl, и только изредка.

Я не могу понять, как обрабатывать два разных результата из метода parse из Calendar.parse () из parsedatetime

Учитывая этот скрипт:

#!/usr/bin/python import parsedatetime.parsedatetime as pdt import parsedatetime.parsedatetime_consts as pdc import sys import os # create an instance of Constants class so we can override some of the defaults c = pdc.Constants() # create an instance of the Calendar class and pass in our Constants # object instead of letting it create a default p = pdt.Calendar(c) while True: reply = raw_input('Enter text:') if reply == 'stop': break else: result = p.parse(reply) print result print 

И этот образец запуска:

Введите текст: завтра
(time.struct_time (tm_year = 2009, tm_mon = 11, tm_mday = 28, tm_hour = 9, tm_min = 0, tm_sec = 0, tm_wday = 5, tm_yday = 332, tm_isdst = -1), 1)

Введите текст: 11/28
((2009, 11, 28, 14, 42, 55, 4, 331, 0), 1)

Я не могу понять, как получить результат, чтобы я мог последовательно использовать результат:

 print result[0].tm_mon, result[0].tm_mday 

Это не будет работать в том случае, если вход «11/28», потому что вывод – это всего лишь кортеж, а не struct_time.

Наверное, простая вещь, но не для этого новичка. С моей точки зрения вывод Calendar.parse () непредсказуем и прост в использовании. Любая помощь оценивается. Тиа.

2 Solutions collect form web for “Обработка различных результатов из parsedatetime”

Я знаю, что это старый вопрос, но я столкнулся с этим вчера, и ответ здесь неполный (он потерпит неудачу в случае, когда parse () возвращает дату-время).

Из документов parsedatetime:

parse () возвращает кортеж (результат, тип), где type указывает один из следующих:

  0 = not parsed at all 1 = parsed as a date (of type struct_time) 2 = parsed as a time (of type struct_time) 3 = parsed as a datetime (of type datetime.datetime) 

Это немного странно и, возможно, не самый ясный способ сделать это, но он работает и очень полезен.

Вот небольшой фрагмент кода, который преобразует все, что он возвращает, в правильное время и время python:

 import parsedatetime.parsedatetime as pdt def datetimeFromString( s ): c = pdt.Calendar() result, what = c.parse( s ) dt = None # what was returned (see http://code-bear.com/code/parsedatetime/docs/) # 0 = failed to parse # 1 = date (with current time, as a struct_time) # 2 = time (with current date, as a struct_time) # 3 = datetime if what in (1,2): # result is struct_time dt = datetime.datetime( *result[:6] ) elif what == 3: # result is a datetime dt = result if dt is None: # Failed to parse raise ValueError, ("Don't understand date '"+s+"'") return dt 

Используйте x = time.struct_time(result[0]) и вы получите struct_time (чтобы вы могли проверить x.tm_mon и x.tm_mday ) независимо от того, является ли этот result[0] struct_time или просто 9 -tuple (я никогда не слышал о parsedatetime поэтому не знаю, почему это непоследовательно по возвращаемому типу, но с помощью этого простого подхода вы можете нейтрализовать эту несогласованность).

  • Python: Pass или Sleep для длительных процессов?
  • Ошибка синтаксического анализа запроса предка
  • WSGI - установить тип контента в JSON
  • Мониторинг удаленного FTP-каталога
  • Два размерных массива Python: Сортировка второй по первой
  • Измените один символ в строке?
  • Использование строки в качестве имени переменной
  • Google App Engine, измените версию python
  • Можно ли использовать опцию -S python?
  • как показать процент в python
  • Как проверить строку для определенного письма в Python?
  •  
    Interesting Posts for Van-Lav

    Получение содержимого из html и запись загруженного содержимого в определенном формате в CSV

    Как написать в подпроцесс Python 'stdin?

    Как получить исходные переменные после запуска Scikit Model с использованием метода OneHotEncoding

    import cv2 работает, но импортирует cv2.cv как cv не работает

    Форматирование строки с форматом «{0: d}» дает код неизвестного формата «d» для объекта типа «float»

    почему django встроенные auth-представления не распознают настраиваемую форму?

    Сравнение двух данных и получение различий

    Перезагрузите модуль в Python 3.4

    Fixing ": библиотека GMP или MPIR не найдена; Не создайте ошибку Crypto.PublickKey._fastmath "на Python 2.7 с CentOS 6.4

    Как распаковать несколько кортежей в вызове функции

    Tensorflow: Как написать op с градиентом в python?

    Решить замещения в RestructuredText

    Преобразование dict вложенных списков в список кортежей

    numping uint8 pixel wrapping solution

    Приближение многоугольника с кругом

    Python - лучший язык программирования в мире.