python将其分为1-2个数字和Jan或每个月份。所以它只与“2月12日”或“1月12日”匹配,而不与其余部分匹配
那么我如何只对月份进行分组,这样我就可以只对月份使用,而不对表达式的其余部分使用
直接回答您的问题,您可以为“Day Month Year”和“Month Day Year”格式创建两个正则表达式,然后分别检查它们。
import datetime
# Make months using list comp
months_shrt = [datetime.date(1,m,1).strftime('%b') for m in range(1,13)]
months_long = [datetime.date(1,m,1).strftime('%B') for m in range(1,13)]
# Join together
months = months_shrt + months_long
months_or = f'({"|".join(months)})'
expr_dmy = '\d{1,3},? ' + months_or + ',? \d{4}'
expr_mdy = months_or + ',? \d{1,3},? \d{4}'
你可以两个都试一下,看看哪一个匹配。然而,您仍然需要检查它,并将其转换为您最喜欢的日期格式。
相反,我建议完全不要使用regexp,而只尝试不同的日期格式。
str_a = ' ,'
str_b = ' ,'
base_fmts = [('%d', '%b', '%Y'),
('%d', '%B', '%Y'),
('%b', '%d', '%Y'),
('%B', '%d', '%Y')]
def my_formatter(s):
for o in base_fmts:
for i in range(2):
for j in range(2):
# Concatenate
fmt = f'{o[0]}{str_a[i]} '
fmt += f'{o[1]}{str_b[j]} '
fmt += f'{o[2]}'
try:
d = datetime.datetime.strptime(s, fmt)
except ValueError:
continue
else:
return d
>>> d = my_formatter('Jan 15, 2009')
>>> (d.month, d.day, d.year)
(1, 15, 2009)
问题内容: 有一个名为myDate的文本字段。该字段可以包含1)“结束 某日期 的会计年度”或2)“ dateA 到” dateB ”。 在情况1)中,我想将字段date1 =设置为 someDate 。 在情况2)中,我要设置字段date1 = dateA 和字段date2 = dateB 。 所有日期( someDate , dateA , dateB )都可以写为2000年1月1日,2000
问题内容: 我要提取字符串。我该怎么做? 也许有很多点,例如: 在这种情况下,我基本上想要由和界定的东西。我该如何实现? 另一个问题: 似乎和相同。 问题答案: 尝试匹配 整个 字符串。使用代替。然后,以下模式将满足您的要求: 基本上,我们正在寻找,然后消耗尽可能多的非斜杠字符。那些非斜杠字符将被捕获在组号1中。 实际上,有一种更高级的技术可以执行此操作,但不需要捕获(通常很耗时)。它使用所谓的l
问题内容: 我在python中有一个字符串。我需要将其转换为date对象,然后获取 year 以及 Julian day 的整数值。可能吗? 问题答案: 首先,您可以将其转换为这样的对象: 然后,您可以使用上的方法来获取所需的内容……除了没有直接所需的功能之外,因此您需要转换为时间元组 术语“朱利安日”具有几个不同的含义。如果要查找,则必须间接执行此操作,例如,以下一项。 如果您正在寻找不同的含义
问题内容: 我是新手,我有一个字符串,我想从字符串中提取数字。例如: 输出为 我只想获取一个整数,而不是列表。 问题答案: 您可以使用方法按 数字 字符串,
问题内容: 我将提取字符串中包含的所有数字。哪个更适合pur 例: 结果: 问题答案: 如果只想提取正整数,请尝试以下操作: 我认为这比正则表达式示例更好,原因有三点。首先,你不需要其他模块;其次,它更具可读性,因为你无需解析迷你语言;第三,它更快(因此可能更): 这将无法识别浮点数,负整数或十六进制格式的整数。如果你不能接受这些限制,则可以通过以下亭亭玉立的答案解决问题。
所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter