廣州積分入學(xué)網(wǎng)站百度seo排名教程
1. 需求描述
- 根據(jù)預(yù)測出結(jié)果發(fā)出指令的秒級時間,使用時間戳,也就是設(shè)定時間(字符串)轉(zhuǎn)為數(shù)字時間戳。
- 時間計算轉(zhuǎn)換過程中,出現(xiàn)單個整數(shù)(例如8點),按字符串格式補齊兩位“08”。
- 字符串去空格,替換特殊字符(例如空格,數(shù)據(jù)中的逗號“1,024.00”),特別是輸入數(shù)據(jù)不規(guī)范的時候,讀入到pandas中時,把數(shù)據(jù)變成了object問題。
- sql語句參數(shù)傳遞。
- 讀取JSON格式日志文件。
- 生成正態(tài)分布隨機(jī)數(shù)。
2. python時間處理
2.1. Python時間轉(zhuǎn)換為整數(shù)(時間戳)
在日常的編程開發(fā)中,我們經(jīng)常會遇到需要將時間轉(zhuǎn)換為整數(shù)的情況。例如,我們可能需要將時間戳用于排序、計算時間間隔等操作。
什么是時間戳?
Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現(xiàn)在的總秒數(shù)。Unix時間戳不僅被使用在Unix 系統(tǒng)、類Unix系統(tǒng)中,也在許多其他操作系統(tǒng)中被廣泛采用。
Python的標(biāo)準(zhǔn)庫中包含了time模塊,該模塊提供了一系列處理時間的函數(shù),其中的time()函數(shù)來獲取當(dāng)前時間的時間戳,然后將時間戳轉(zhuǎn)換為整數(shù)。
如下是使用time模塊進(jìn)行時間轉(zhuǎn)換的示例代碼:
import time# 獲取當(dāng)前時間的時間戳
timestamp = int(time.time())
print("當(dāng)前時間的時間戳:", timestamp)
如下是把時間字符串,轉(zhuǎn)換為時間戳的示例代碼:
tdt = time.strptime('2023-11-16 11:12', "%Y-%m-%d %H:%M")
timestamp = int(time.mktime(tdt))
print("當(dāng)前時間的時間戳:", timestamp)
Python的標(biāo)準(zhǔn)庫中datetime模塊,該模塊提供了更加方便的日期和時間操作方法。我們可以使用datetime模塊中的datetime類來獲取當(dāng)前時間,并將其轉(zhuǎn)換為整數(shù)。
如下是使用datetime模塊進(jìn)行時間轉(zhuǎn)換的示例代碼:
from datetime import datetime# 獲取當(dāng)前時間
now = datetime.now()# 將當(dāng)前時間轉(zhuǎn)換為整數(shù)
timestamp = int(now.timestamp())
print("當(dāng)前時間的時間戳:", timestamp)
2.2. 時間戳轉(zhuǎn)時間
使用 time 模塊的 localtime() 函數(shù)將時間戳轉(zhuǎn)換為本地時間的 struct_time 對象
timestamp = 1700193600
local_time= time.localtime(timestamp)
time.strftime("%Y-%m-%d %H:%M:%S", local_time)
2.3. 時間間隔計算
timedelta() 表示兩個 date 對象或者 time 對象,或者 datetime 對象之間的時間間隔,精確到微秒。
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
如下當(dāng)前時間延后5分鐘,示例代碼如下:
import datetime
now = datetime.datetime.now() + datetime.timedelta(minutes=5)
print('延遲時間是:', now.strftime("%Y-%m-%d %H:%M"))
3. 字符串替換
3.1. python補全字符串
3.1.1. 右對齊補全字符串
例如:我們計算獲取到時間為9點,如果補全為“09”,用于轉(zhuǎn)換為時間,方法如下:
s = '9'
s.rjust(2,'0')
結(jié)果為09。
3.1.2. 左對齊補全字符串
s = 'ab'
s.ljust(4,'0')
結(jié)果為ab00。
3.2. 字符串去空格
3.2.1. 去開頭空格
使用strip()方法,是一個Python內(nèi)置函數(shù),可以用來去除字符串開頭和結(jié)尾的空格。例如,以下代碼將使用strip()方法去除字符串開頭和結(jié)尾的空格:
s = ' dd'
print(s.strip())
3.2.2. 去任何地方空格
使用replace()方法,可以用來替換字符串中的一些字符。我們可以使用它來替換空格字符。例如,以下代碼將使用replace()方法將空格字符替換為空字符串:
s = ' dd'
print(s.replace(' ',''))
3.3. 動態(tài)sql語句替換變量
例如:
date = '2023-11-14'
days = 1
sql = '''
select CONCAT(DATE_FORMAT(RecordTime,'%H:'), case when MINUTE(RecordTime)<30 then '00' else '30' end) CreateTime,sum(ThisPower) Capacity from electricitymeter_historywhere DATE_FORMAT(RecordTime,'%Y-%m-%d')<'{date}'and RecordTime>=date_sub(str_to_date('{date}', '%Y-%m-%d'), interval {days} day)group by CONCAT(DATE_FORMAT(RecordTime,'%H:'), case when MINUTE(RecordTime)<30 then '00' else '30' end) order by CreateTime
'''
sql = sql.format('{}',date=date,days=days)
print(sql)
在Python中,使用format函數(shù)可以將變量插入字符串中進(jìn)行格式化。其基本語法為:
- formatted_string = “Text {}”.format(variable)
- "Text {}"是一個字符串,其中的{}表示一個占位符,format函數(shù)將會把后面的變量替換進(jìn)去。
4. python讀取JSON文件
Json文件的語法:
- 主要數(shù)據(jù)類型為對象{}(類似Python中的字典)和數(shù)組[] (類似Python中的列表)
- Json文件的最外層是一個對象{},或者是一個數(shù)組[]
- Json中的對象是由鍵值對組成,每個數(shù)據(jù)之間用逗號隔開,最后一個數(shù)據(jù)后無逗號
- Json中的字符串必須使用雙引號
JSON文件示例:
{"SoC":0.2,"peak2power":379,"curve":
[{"timestamp": 1700065800, "value": 86, "tmp": "2023-11-16 00:30"},
{"timestamp": 1700087400, "value": 0, "tmp": "2023-11-16 06:30"},
{"timestamp": 1700096400, "value": 0, "tmp": "2023-11-16 09:00"},
{"timestamp": 1700098200, "value": 0, "tmp": "2023-11-16 09:30"}]}
注意:字符串必須使用雙引號,我在這地方耽擱時間了!
import json
with open('curve.json', 'r',encoding='utf-8') as f:print(str(f))content = json.load(f)
content
5. 其他
生成正態(tài)分布隨機(jī)數(shù),使用random庫中的gauss()方法。
Python內(nèi)置的random庫中包含了生成正態(tài)分布隨機(jī)數(shù)的方法。如下面的使用方法。
import random# 生成均值為mu,標(biāo)準(zhǔn)差為sigma的正態(tài)分布隨機(jī)數(shù)
random_num = random.gauss(mu, sigma)