проблемы с использованием строки Python - PullRequest
0 голосов
/ 12 мая 2018

Я использую Django, поэтому все это выполняется в виртуальной среде, поэтому это может быть причиной моей проблемы (даже если я не знаю, как)

Я создал функцию для разделения строкисодержащие дату и время:

def split_time(time_string, string):  # '2018-03-17T05:20:00+01:00'
    if string == 'date':
        date = time_string.split('T')[0]
        return date
    elif string == 'time':
        pre_time = time_string.split('T')[-1]
        time = pre_time.split('+')[0]
        return time

в комментарии отображается, какую строку я получаю

Я использую [0] и [-1], потому что по какой-то причине массив заполняется в отрицательном направлении (Я уже создал вопрос из-за того, что дало мне обходной путь использования [-1], при необходимости я свяжу вопрос)

здесь я вызываю функцию:

    end_event_time = split_time(end, 'time')
    test = end_event_time.split(':')
    h = test[0]
    m = test[1]
    print(end_event_time, h, m)

test display['05', '20', '00']

h дает мне 05, в то время как m вызывает ошибку list index out of range

[-1] отображает 00

Моя проблема в том, чтомне нужно не только вызывать переменные с отрицательными индексами, я могу получить доступ только к первой и последней переменным

Я использую среду Django, но эти тесты отображаются на консоли

Буду признателен за любую помощь!

edit

включает в себя:

from __future__ import print_function
import httplib2
import os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
import datetime

Полная функция выглядит следующим образом:

def is_double(start_date, start_time, end_date, end_time):
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    service = discovery.build('calendar', 'v3', http=http)
    start_date_time = start_date +'T'+ start_time +":00+02:00"
    print("testing:", start_date_time )
    end_date_time = end_date +'T'+ end_time      +":00+02:00"              
    start_now = datetime.datetime.utcnow().isoformat() + 'Z' 
    #Getting the upcoming 20 events
    eventsResult = service.events().list(calendarId='primary', timeMin=start_now, maxResults=20, singleEvents=True,
    orderBy='startTime').execute()
    events = eventsResult.get('items', [])
    if not events:
        print('no event')
        return False
    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        end = event['end'].get('dateTime', event['end'].get('date'))
    #up to this line everything is copied from the google api website
    #i am getting the 10 upcoming events from a google calendar
        end_event_time = split_time(end, 'time')
        test = end_event_time.split(':')
        h = test[0]
        m = test[-1]
        print(end_event_time,test, h, m)
  return true

Вывод:

05:20:00 ['05', '20', '00'] 05 00
01:03:00 ['01', '03', '00'] 01 00

Примечание. Чтобы проверить этотребуется подключение к календарю Google, но я получаю тот же вывод, если я использую end_event_time = '05:20:00' вместо моего split_time (), поэтому я почти уверен, что он не имеет никакого отношения к API календаря.

1 Ответ

0 голосов
/ 12 мая 2018

Хорошо, ребята, друг решил это:

Я пытался позвонить test[1], но тест - это список!

Так что с помощью push и pop это исправлено!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...