如何在空格和标记之间搜索字符串? Python
How to search for string between whitespace and marker? Python
我的问题如下:
我有字符串:
datetime = "2021/04/07 08:30:00"
我想保存在变量 hour, 08 and
我想在可变分钟内保存,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 = re.search('\ ([0-9]*):', datetime)
输出:
>>> hour.group(1)
'08'
您可以尝试使用下面的正则表达式使其非贪婪并首先停止 :
hour = re.search(' (.*?):', datetime)
啊,不不,python 有更好的方法 datetime.strptime
https://www.programiz.com/python-programming/datetime/strptime
所以对你来说:
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_string:
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]
请使用日期时间模块中的 strptime
,这是处理 python 中字符串日期的推荐方法。
strptime
returns 来自字符串日期的日期时间对象,这个日期时间对象带有各种好东西,如 date
、time
、hour
、isoformat
、timestamp
等,这使得使用日期时间变得轻而易举。
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
您正在做的事情的替代方法是将原始日期时间按 space 拆分为日期等变量,这将为您提供 ['2021/04/07', '08:30: 00']。然后,您可以访问列表变量日期的第二个值,并用“:”再次拆分它,以获得单独的时间,并从变量时间访问列表变量时间的部分,包括小时、分钟和秒。
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']
您可以使用“08”的时间[0]、“30”的时间[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 = "Hello World 2021/04/07 08:30:00 Goodbye"
r = re.compile(r'\b\d{4}/\d{2}/\d{2} (?P<hour>\d{2}):(?P<minute>\d{2}):\d{2}\b')
output = [m.groupdict() for m in r.finditer(inp)]
print(output[0]['hour']) # 08
print(output[0]['minute']) # 30
这是一个简单的日期时间问题。 Python 已经能够完全满足您的需求。 3 个步骤:
from datetime import datetime
dt_string = "2021/04/07 08:30:00"
dt_object = datetime.strptime(dt_string, "%Y/%m/%d %H:%M:%S")
print(dt_object)
print(dt_object.hour, dt_object.minute)
# 2021-04-07 08:30:00
# 8 30
我的问题如下: 我有字符串:
datetime = "2021/04/07 08:30:00"
我想保存在变量 hour, 08 and 我想在可变分钟内保存,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 = re.search('\ ([0-9]*):', datetime)
输出:
>>> hour.group(1)
'08'
您可以尝试使用下面的正则表达式使其非贪婪并首先停止 :
hour = re.search(' (.*?):', datetime)
啊,不不,python 有更好的方法 datetime.strptime
https://www.programiz.com/python-programming/datetime/strptime
所以对你来说:
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_string:
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]
请使用日期时间模块中的 strptime
,这是处理 python 中字符串日期的推荐方法。
strptime
returns 来自字符串日期的日期时间对象,这个日期时间对象带有各种好东西,如 date
、time
、hour
、isoformat
、timestamp
等,这使得使用日期时间变得轻而易举。
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
您正在做的事情的替代方法是将原始日期时间按 space 拆分为日期等变量,这将为您提供 ['2021/04/07', '08:30: 00']。然后,您可以访问列表变量日期的第二个值,并用“:”再次拆分它,以获得单独的时间,并从变量时间访问列表变量时间的部分,包括小时、分钟和秒。
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']
您可以使用“08”的时间[0]、“30”的时间[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 = "Hello World 2021/04/07 08:30:00 Goodbye"
r = re.compile(r'\b\d{4}/\d{2}/\d{2} (?P<hour>\d{2}):(?P<minute>\d{2}):\d{2}\b')
output = [m.groupdict() for m in r.finditer(inp)]
print(output[0]['hour']) # 08
print(output[0]['minute']) # 30
这是一个简单的日期时间问题。 Python 已经能够完全满足您的需求。 3 个步骤:
from datetime import datetime
dt_string = "2021/04/07 08:30:00"
dt_object = datetime.strptime(dt_string, "%Y/%m/%d %H:%M:%S")
print(dt_object)
print(dt_object.hour, dt_object.minute)
# 2021-04-07 08:30:00
# 8 30