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