5 回答

TA贡献1827条经验 获得超4个赞
切片在这种情况下不起作用,因为切片在任何情况下都不起作用。.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

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

TA贡献1853条经验 获得超6个赞
您可以在逗号上拆分初始列表以创建包含多个字符串的列表,每个字符串代表一个日期。
然后遍历这些日期,用空格分隔它们。后续列表中的最后一个值是您要查找的日期值。
如果不清楚,请告诉我。
它看起来像这样:
list_of_dates = ["2022 November 23, 2023 April 9"]
# This separates all dates by splitting on the comma
dates = "".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"]

TA贡献2080条经验 获得超4个赞
所以,我在这里有两个建议:
尝试学习 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 。

TA贡献1906条经验 获得超3个赞
您可以通过几种不同的方式解决此问题:
使用 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:]
添加回答
举报