如何在单引号字符串中设置日期格式;yyyy-mm-dd“;用python?
如何在python中以单引号字符串“yyyy-mm-dd”格式化日期,并与以下正则表达式匹配如何在单引号字符串中设置日期格式;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(
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 todaydatetime.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)
,因为您可能会有不同的文本。