Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在空白和标记之间搜索字符串?普顿_Python_Datetime_Substring_Re - Fatal编程技术网

Python 如何在空白和标记之间搜索字符串?普顿

Python 如何在空白和标记之间搜索字符串?普顿,python,datetime,substring,re,Python,Datetime,Substring,Re,我的问题如下: 我有字符串: datetime=“2021/04/07 08:30:00” 我想在变量小时内保存,08和 我想在变量分钟内保存,30分钟 我所做的工作如下: import re pat = re.compile(' (.*):') hour = re.search(pat, datetime) minutes = re.search(pat, datetime) print(hour.group(1)) print(minutes.group(1)) 我从指纹中得到的是 0

我的问题如下: 我有字符串:

datetime=“2021/04/07 08:30:00”

我想在变量小时内保存,08和 我想在变量分钟内保存,30分钟

我所做的工作如下:

import re
 
pat = re.compile(' (.*):')
hour = re.search(pat, datetime)
minutes = re.search(pat, datetime)
print(hour.group(1))
print(minutes.group(1))
我从指纹中得到的是
08:30
30
,因此会议记录是正确的,但由于某种原因,我不明白,在几个小时内,第一个
被跳过,从空白到第二个


我做错了什么?谢谢。

通配符
匹配任何单个字符,即使是
。因此,
*
08:30
匹配

使用:

输出:

>>> hour.group(1)
'08'

通配符
匹配任何单个字符,即使是
。因此,
*
08:30
匹配

使用:

输出:

>>> hour.group(1)
'08'

您可以在正则表达式下面尝试使其不贪婪,并首先停止::

hour = re.search(' (.*?):', datetime)

您可以在正则表达式下面尝试使其不贪婪,并首先停止::

hour = re.search(' (.*?):', datetime)

啊,不,不,python使用datetime.strTime有更好的方法

所以对你来说:

from datetime import datetime

dt_string = "2021/04/07 08:30:00"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%Y/%m/%d %H:%M:%S")
你想要几个小时

hours = dt_object1.hour
还是几分钟

mins = dt_object1.minute
现在,如果您所展示的只是一个需要处理空白的示例,那么您可以拆分字符串。再次使用dt_字符串:

dt_string1 = dt_string.split(" ")
dateString = dt_string1.split("/")  # A list in [years, months, days]
timeString = dt_string2.split(":")  # A list in [hours, minutes, seconds]

啊,不,不,python使用datetime.strTime有更好的方法

所以对你来说:

from datetime import datetime

dt_string = "2021/04/07 08:30:00"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%Y/%m/%d %H:%M:%S")
你想要几个小时

hours = dt_object1.hour
还是几分钟

mins = dt_object1.minute
现在,如果您所展示的只是一个需要处理空白的示例,那么您可以拆分字符串。再次使用dt_字符串:

dt_string1 = dt_string.split(" ")
dateString = dt_string1.split("/")  # A list in [years, months, days]
timeString = dt_string2.split(":")  # A list in [hours, minutes, seconds]

请使用datetime模块中的
strtime
,这是python中处理字符串日期的推荐方法

strtime
从字符串date返回一个datetime对象,这个datetime对象附带了各种各样的功能,比如
date
time
hour
isoformat
timestamp
等,使使用datetime变得轻松

datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S")
datetime.datetime(2021, 4, 7, 8, 30)
datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S").hour
8
datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S").second
0

请使用datetime模块中的
strtime
,这是python中处理字符串日期的推荐方法

strtime
从字符串date返回一个datetime对象,这个datetime对象附带了各种各样的功能,比如
date
time
hour
isoformat
timestamp
等,使使用datetime变得轻松

datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S")
datetime.datetime(2021, 4, 7, 8, 30)
datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S").hour
8
datetime.datetime.strptime("2021/04/07 08:30:00", "%Y/%m/%d %H:%M:%S").second
0

另一种方法是将原始的datetime按空格分割成一个变量,例如dates,它将为您提供['2021/04/07','08:30:00']。然后,您可以访问列表变量dates的第二个值,并将其再次按“:”进行拆分,以获取单个时间,并从变量time中访问列表变量time的各个部分,以小时、分钟和秒为单位

datetime = "2021/04/07 08:30:00"

dates = datetime.split(" ")
print(dates)

time = dates[1].split(":")
print(time)
打印代码将为您提供

打印日期-->['2021/04/07','08:30:00']

打印时间-->['08','30','00']


您可以访问时间的各个部分,时间[0]表示“08”,时间[1]表示“30”等。

另一种方法是将原始日期时间按空格拆分为一个变量,例如日期,这将为您提供['2021/04/07','08:30:00']。然后,您可以访问列表变量dates的第二个值,并将其再次按“:”进行拆分,以获取单个时间,并从变量time中访问列表变量time的各个部分,以小时、分钟和秒为单位

datetime = "2021/04/07 08:30:00"

dates = datetime.split(" ")
print(dates)

time = dates[1].split(":")
print(time)
打印代码将为您提供

打印日期-->['2021/04/07','08:30:00']

打印时间-->['08','30','00']


您可以访问时间的各个部分,时间[0]表示“08”,时间[1]表示“30”,等等。

您可以使用Striptime在某些情况下执行该操作,如果您需要使用字符串,您可以使用+[这里有哪些内容,您可以在这里使用例如0-7或a-z或a-z或符号]+

import re
datetime = "2021/04/07 08:30:00"
#here you need to make a change
hour = re.search(' (.*):+[0-7]+:', datetime)
minutes = re.search(':(.*):', datetime)
print(hour.group(1))
print(minutes.group(1))

在某些情况下,如果需要使用字符串,可以使用Striptime进行搜索。[此处包含哪些内容,您可以在此处使用示例0-7或a-z或a-z或符号]+

import re
datetime = "2021/04/07 08:30:00"
#here you need to make a change
hour = re.search(' (.*):+[0-7]+:', datetime)
minutes = re.search(':(.*):', datetime)
print(hour.group(1))
print(minutes.group(1))

我将使用
re.compile
和命名的捕获组并迭代:

inp=“你好,世界2021/04/07 08:30:00再见”
r=re.compile(r'\b\d{4}/\d{2}/\d{2}(?P\d{2}):(?P\d{2}):\d{2}\b')
output=[m.groupdict()表示r.finditer(inp)中的m]
打印(输出[0][‘小时])#08
打印(输出[0][“分钟])#30

我将使用
重新编译
命名捕获组并迭代:

inp=“你好,世界2021/04/07 08:30:00再见”
r=re.compile(r'\b\d{4}/\d{2}/\d{2}(?P\d{2}):(?P\d{2}):\d{2}\b')
output=[m.groupdict()表示r.finditer(inp)中的m]
打印(输出[0][‘小时])#08
打印(输出[0][“分钟])#30

这是一个简单的日期时间问题。Python已经能够完全满足您的需要。3个步骤:

  • 用于根据字符串生成日期时间
  • 您可以获得格式化选项
  • 仅返回datetime对象的小时或分钟

这是一个简单的日期时间问题。Python已经能够完全满足您的需要。3个步骤:

  • 用于根据字符串生成日期时间
  • 您可以获得格式化选项
  • 仅返回datetime对象的小时或分钟

为什么不使用<代码>分钟=DATETIME.SPLY(‘:’)/代码>和<代码>小时=DATETIME.SPLY('::')[0 ] [-2:] /代码>?请考虑编译正则表达式模式,而不是多次评估它,这可以在复杂模式中节省大量的计算时间。如果有任何答案有助于解决问题,请考虑点击✓ 在它的左边。请注意,接受解决方案会得到2。为什么不使用
minutes=datetime.split(“:”)[1]
hours=datetime.sp