程序不会解析splitlines字符串

时间:2018-02-20 00:05:28

标签: python arrays string split range

我试图解析节目时间表,这样我就可以确定某些节目的播放时间。我在解析整个字符串时创建了一个相对有效的程序,但是当我将它拆分成行时,它开始生成一个字符串索引超出范围错误。我通过将范围缩小1并确保我没有检查不存在的索引坐标来解决这个问题,但现在程序只打印了两次。这是我的代码。

scheduleLines = schedule.splitlines()
timeCoordinate = -10
for Line in scheduleLines:
    for counter in range(len(Line) - 1):

        if counter <= timeCoordinate:
            continue

        if Line[counter].isdigit() == True:

            if Line[counter + 1] == ":":
                print(Line[counter:counter + 4])
                timeCoordinate = counter + 4
            if counter + 2 < len(Line):
                if Line[counter + 2] == ":":
                    print(Line[counter:counter + 5])
                    timeCoordinate = counter + 5

它仅打印9:00和8:00,这是时间表。该程序的先前版本可以提取和打印所有时间。当我将它发布到StackoverFlow时,我无法正确格式化时间表,但每次加上节目的名称都是不同的一行。

  • 2月12日星期一

    上午9:00 - CanDo的ep9

    9:30 - 故事时间ep7

    上午10:00 Afro Tusk ep3

    11:00a - Thunderbolt ep1

    12:00 - 西雅图,现在ep27

    1:00p - Startime ep53

    3:00p - heartBeat Radio ep6

    3:30单身父亲ep13p

    4:00p - 交通阻塞

    6:00 - Livin it Up ep 7

    6:30体育&amp;东西ep15

    7:00 - Lidline Sports

    8:00 - 西雅图体育周刊ep22

    9:00p - Reggae ep6

    10:00 - MoJam Monday ep7

    11:00 Just My Opinion ep21

    午夜 - 多样化编程

1 个答案:

答案 0 :(得分:0)

根据我的理解,您希望从您可以执行的给定字符串中提取所有时间。

- (void)layoutSubviews {
    (super layoutSubviews];

    CGRect r = [self trackRectForBounds:self.bounds];
    CGFloat startPosition = r.origin.x;
    CGFloat width = r.size.width;
}

<强>输出:

schedule = """Monday Feb 12th 

9:00 am - CanDo’s ep9 

9:30 - Storytime ep7 

10:00am Afro Tusk ep3 

11:00a - The Thunderbolt ep1 

12:00 - Seattle here and Now ep27 

1:00p - Startime ep53 

3:00p - heartBeat Radio ep6 

3:30 Single Father ep13p 

4:00p - Traffic Jam 

6:00 - Livin it Up ep 7 

6:30 Sports & Stuff ep15 

7:00 - Lidline Sports

8:00 - Seattle Sports Weekly ep22 

9:00p - The Reggae ep6

10:00 - MoJam Monday ep7 

11:00 Just My Opinion ep21 

Midnight - Diverse Programming
"""
scheduleLines = filter(None, schedule.splitlines())
for i in scheduleLines:
    if i[0].isdigit():
        t = i.split()
        print t[0]