如何在单引号字符串中设置日期格式;yyyy-mm-dd“;用python?

如何在单引号字符串中设置日期格式;yyyy-mm-dd“;用python?,python,pandas,Python,Pandas,如何在python中以单引号字符串“yyyy-mm-dd”格式化日期,并与以下正则表达式匹配 r'max_p_range_day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\'' 守则: pmax=df5.iloc[:,-5] # maximum pressure pmin=df5.iloc[:,-4] # minimum pressure df5['PressureDiff']=pmax-pmin pm=df5["PressureDiff"].max(

如何在python中以单引号字符串“yyyy-mm-dd”格式化日期,并与以下正则表达式匹配

r'max_p_range_day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\''
守则:

pmax=df5.iloc[:,-5]  # maximum pressure
pmin=df5.iloc[:,-4]   # minimum pressure

df5['PressureDiff']=pmax-pmin
pm=df5["PressureDiff"].max()
df5=df5.loc[df5.PressureDiff==pm]
df5=pd.to_datetime(df5['Day']).dt.date   

from datetime import datetime
max_p_range_day = ## format as yyyy-mm-dd enclosed in single quotes
t=open("handson_date.txt",'w')
t.write("max_p_range_day = %s" % max_p_range_day)
为了测试我写答案的文件,代码如下:

x=open("handson_date.txt",'r')
out=x.read()
res=re.findall(r'max_p_range_day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\'', out)[0].replace(' ', '').replace("'", "")

如何格式化日期以匹配以下正则表达式?

格式化
datetime
您有
strftime()

r'max_p_range_day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\''
今天的日期

 datetime.datetime.now().strftime("'%Y-%m-%d'")
结果(并且,
是结果的一部分)

您甚至可以将其与其他文本一起使用

datetime.datetime.now().strftime("max_p_range_day = '%Y-%m-%d'")
结果

max_p_range_day = '2021-01-08'
                        date
0 2021-01-08 10:12:51.295168
1 2021-01-07 10:12:51.295168
2 2021-01-09 10:12:51.295168


0    max_p_range_day = '2021-01-08'
1    max_p_range_day = '2021-01-07'
2    max_p_range_day = '2021-01-09'
Name: date, dtype: object
即使在
DataFrame中也可以执行同样的操作

import datetime
import pandas as pd

one_day = datetime.timedelta(days=1)
today = datetime.datetime.today()

df = pd.DataFrame({'date': [today, today-one_day, today+one_day]})
print(df)


result = df['date'].dt.strftime("max_p_range_day = '%Y-%m-%d'")
print(result)
结果

max_p_range_day = '2021-01-08'
                        date
0 2021-01-08 10:12:51.295168
1 2021-01-07 10:12:51.295168
2 2021-01-09 10:12:51.295168


0    max_p_range_day = '2021-01-08'
1    max_p_range_day = '2021-01-07'
2    max_p_range_day = '2021-01-09'
Name: date, dtype: object

编辑: 您必须在
“max\u p\u range\u day='%s'


要格式化
datetime
您需要
strftime()

今天的日期

 datetime.datetime.now().strftime("'%Y-%m-%d'")
结果(并且,
是结果的一部分)

您甚至可以将其与其他文本一起使用

datetime.datetime.now().strftime("max_p_range_day = '%Y-%m-%d'")
结果

max_p_range_day = '2021-01-08'
                        date
0 2021-01-08 10:12:51.295168
1 2021-01-07 10:12:51.295168
2 2021-01-09 10:12:51.295168


0    max_p_range_day = '2021-01-08'
1    max_p_range_day = '2021-01-07'
2    max_p_range_day = '2021-01-09'
Name: date, dtype: object
即使在
DataFrame中也可以执行同样的操作

import datetime
import pandas as pd

one_day = datetime.timedelta(days=1)
today = datetime.datetime.today()

df = pd.DataFrame({'date': [today, today-one_day, today+one_day]})
print(df)


result = df['date'].dt.strftime("max_p_range_day = '%Y-%m-%d'")
print(result)
结果

max_p_range_day = '2021-01-08'
                        date
0 2021-01-08 10:12:51.295168
1 2021-01-07 10:12:51.295168
2 2021-01-09 10:12:51.295168


0    max_p_range_day = '2021-01-08'
1    max_p_range_day = '2021-01-07'
2    max_p_range_day = '2021-01-09'
Name: date, dtype: object

编辑: 您必须在
“max\u p\u range\u day='%s'


您是否尝试过
datetime
strftime()
函数?查看.for today
datetime.datetime.now().strftime(“%Y-%m-%d”)
-
'2021-01-08'
甚至
datetime.datetime.now().strftime(“最大值范围\u天=“%Y-%m-%d”)
-
max\u p\u range\u day='2021-01-08'
您是否尝试过
strftime()
datetime的
函数?查看.for today日期
datetime.datetime.now().strftime(“%Y-%m-%d”)
-
'2021-01-08'
甚至
datetime.datetime.now().strftime(“%max\u range\u day=“%Y-%m-%d”)
-
max\u p\u range\u day='2021-01-08'
我编写了max\u p\u range\u day=datetime.strftime(df5.values[0],“max\u p\u range\u day='%Y-%m-%d')。错误如下:max\u p\u range\u day=re.findall(r'max\u p\u range\u day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\'',out)[0]。替换('',)。替换('','')索引器:列表索引超出范围首先检查
findall
-错误可能意味着您得到的是空列表,无法得到
[0]
因为它不存在。您还可以使用
print()
print(type())
检查其他变量中的值。你有什么输入输出?我看不出您是如何创建
out
。也许
out
与您预期的有所不同。x=open(“handson\u date.txt”,“r”)out=x.read()On do:re.findall(r'max\u p\u range\u day\s*=\s*\'\d*[-,]?\d*[-,]\d*'',out)[0],输出是:“max\u p\u range\u day='2018-03-23'”我不知道您的文件中到底有什么。与前面一样:
findall()
可能会给您一个空列表,然后
[0]
不存在,您会得到错误。您应该首先检查通过
findall()
-ie.
data=findall(…)
如果data:res=data[0]
得到了什么。您应该首先检查打印(x)
,因为您可能有不同于预期的文本。我编写了max\u p\u range\u day=datetime.strftime(df5.values[0],“max\u p\u range\u day='%Y-%m-%d')。错误如下:max\u p\u range\u day=re.findall(r'max\u p\u range\u day\s*=\s*\'\d*[-,]?\d*[-,]?\d*\'',out)[0]。替换('',)。替换('','')索引器:列表索引超出范围首先检查
findall
-错误可能意味着您得到的是空列表,无法得到
[0]
因为它不存在。您还可以使用
print()
print(type())
检查其他变量中的值。你有什么输入输出?我看不出您是如何创建
out
。也许
out
与您预期的有所不同。x=open(“handson\u date.txt”,“r”)out=x.read()On do:re.findall(r'max\u p\u range\u day\s*=\s*\'\d*[-,]?\d*[-,]\d*'',out)[0],输出是:“max\u p\u range\u day='2018-03-23'”我不知道您的文件中到底有什么。与前面一样:
findall()
可能会给您一个空列表,然后
[0]
不存在,您会得到错误。您应该首先检查通过
findall()
-ie.
data=findall(…)
如果data:res=data[0]
得到了什么。您应该首先选中打印(x)
,因为您可能会有不同的文本。