使用 .split() 函数后切片不起作用

我正在尝试创建一个函数,该函数采用 YMD 日期字符串的“日”部分。例如:输入:[“2022 年 11 月 23,2023 年 4 月 9 日”] 输出:23


我试图通过使用 .split() 函数在逗号处拆分字符串,然后将最后 2 个索引切出以获取这一天。但是,虽然我可以轻松获得新拆分字符串的最后一项,但我无法获得倒数第二项。


前任:


    y_m_d="2022 November 20,2023 April 9"

    split_ymd=y_m_d.split(",")

    first_value=split_ymd[0]

    print(split_ymd[-1]) #This prints "0"

但是,将第二个参数添加到 slice 命令会破坏它


    y_m_d="2022 November 20,2023 April 9"

    split_ymd=y_m_d.split(",")

    first_value=split_ymd[0]

    print(split_ymd[-1:-2]) #This prints "[]" 

我知道上面的一些术语可能不正确,因为我是学习 python 和一般编程的新手,而且上面的代码非常混乱,但我只需要帮助知道为什么上面的 slice 命令不起作用。我对改进代码本身的建议持开放态度,但我真的只想知道为什么切片在他的情况下不起作用。


月关宝盒
浏览 254回答 5
5回答

GCT1015

切片在这种情况下不起作用,因为切片在任何情况下都不起作用。.split()它与您正在做的任何事情无关。考虑这个更简单的测试用例:>>> [1,2,3,4][-1]4>>> [1,2,3,4][-1:-2][]发生这种情况是因为-1引用索引 3 而 -2 引用索引 2,并且跨度[3,2)是向后的,因此它被视为空。如果你真的想要一个范围,你可以交换它们:>>> [1,2,3,4][-2:-1][3]或者,-2如果您想要倒数第二个元素,则可以使用:>>> [1,2,3,4][-2]3

阿波罗的战车

怎么样:ymd="2022 November 20,2023 April 9"lchar = ymd.find(',')fchar = lchar-2d_int = int(y_m_d[fchar:lchar])print(d_int)如果日期后只有一个逗号,这应该会给你你想要的。

墨色风雨

您可以在逗号上拆分初始列表以创建包含多个字符串的列表,每个字符串代表一个日期。然后遍历这些日期,用空格分隔它们。后续列表中的最后一个值是您要查找的日期值。如果不清楚,请告诉我。它看起来像这样:list_of_dates = ["2022 November 23, 2023 April 9"] # This separates all dates by splitting on the commadates = "".join(list_of_dates).split(",")days = []for d in dates:    # This splits each date on the space    temp = d.split(" ")    days.append(temp[-1])print(days)# Output: ["23", "9"]

犯罪嫌疑人X

所以,我在这里有两个建议:尝试学习 python 切片的工作原理(负数和正数)对于您的实际解决方案,我看到了日期列表。逗号分隔它,然后将日期解析为 datetime 对象可能会使事情变得更容易。# For example,date_str_list = "2022 November 20,2023 April 9"for date_str in date_str_list.split(","):    date = datetime.datetime.strptime(date_str, "%Y %B %d")    day = date.day有关如何控制日期时间对象的字符串格式的更多详细信息,请参阅https://docs.python.org/3/library/datetime.html 。

一只名叫tom的猫

您可以通过几种不同的方式解决此问题:使用 len 函数:date = "2013 November 20,2023 April 10"     splitted = date.split(',')splitted[0][len(splitted[0])-2:]使用负索引:date = "2013 November 20,2023 April 10"    splitted = date.split(',')splitted[0][-2:]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python