使用字符串拆分python的问题

时间:2018-05-12 12:43:33

标签: python django string split

我正在使用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)

测试显示['05', '20', '00']

h给了我05m提出了错误list index out of range

[-1]显示00

我的问题是我不仅需要用负索引调用变量,我只能访问第一个和最后一个变量

我正在使用Django环境,但这些测试显示在控制台上

任何帮助将不胜感激!

修改

包括:

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

注意:为了测试这个,需要连接谷歌日历,但如果我使用end_event_time = '05:20:00'而不是我的split_time(),我会得到相同的输出,所以我很确定它与日历无关API。

1 个答案:

答案 0 :(得分:0)

好的伙计们,朋友解决了这个问题:

我尝试调用test[1]但测试是一个列表!

所以使用push和pop修复它!