python输入格式一个不带小数点_python格式字符串

1、最原始方法“%s”

import xlrd

import cx_Oracle

import time

file = xlrd.open_workbook('4,032 Cells.xls')

sheet = file.sheets()[0]

nrows = sheet.nrows

ncols = sheet.ncols

#~ print ncols

print nrows

for rownum in range(3,nrows):

newlist = sheet.row_values(rownum)

#print newlist

sql="insert into BP_T_CELL_DATA(BATCHNO,CELLID, SCREENDATE,CAPACITY, IR_TW,OCV_TW)values('%s','%s',TO_DATE('%s 00:00:00', 'YYYY/MM/DD HH24:MI:SS'),'%s','%s','%s');"%(newlist[0],newlist[1],newlist[2],newlist[3],newlist[4],newlist[5])

print sql

缺点:1,字段比较多的时候%s,跟tuple中的个数很难对应,一个频繁碰到的问题:TypeError: not enough arguments for formating string。

2、不利于扩展,若是要添加一个字段,%s以及tuple中的位置必须完全对应。

2、字典的key值对应"%(**)s"

def insert_data(row,lineflag):

dic = {}

dic["LINE_FLAG"]=lineflag

cols ="""

referenceid 1,

lastupdateon now(),

lastupdatedby mabo,

createdon now(),

createdby Mabotech,

active 1,

rowversionstamp 1"""

for collist in cols.split(","):

# print collist

colarr = collist.split(" ")

# print colarr

dic[colarr[4]]=colarr[-1]

param = ['MeasurementName', 'MeasurementDescription', 'MeasurementNumber', 'MeasurementStartTime', 'MeasurementVersion', 'TestName', 'ReleaseNumber', 'RunNumber', 'TestcellParameterFile', 'EngineParameterFile', 'TestParameterFile', 'Frequency', 'LastAppendingTime', 'NumberofAppends', 'TestcellID', 'Project', 'EStopChannel', 'CELL_NAME', 'CELL_SITE', 'CELL_TYPE', 'GRAV_DRIFT', 'VISC_DRIFT', 'BARO_DRIFT', 'HUMI_DRIFT', 'EngineStartedRecognitionSpeed', 'EngineIdleMode', 'EngineIdleDynoSP', 'EngineIdleEngSP', 'EngineID', 'EngineSpeedRampLimit', 'EngineTorqueRampLimit', 'EngineThrottleRampLimit', 'EngineAuxRampLimit', 'EngineMaxSpeed', 'EngineMinSpeed', 'EngineMaxTorque', 'EngineMinTorque', 'EngineMaxAux', 'EngineMinAux', 'EngineIdleDynoRampTime', 'EngineIdleEngRampTime', 'APPLICATION_TYPE', 'CPL', 'CPL_REV', 'CUBIC_CAP', 'FUEL_PUMP_CODE', 'FUEL_PUMP_REV', 'FUEL_PUMP_TYPE', 'MODEL', 'TestID', 'XAxisChannelName', 'XAxisIncrementValue', 'XAxisIncrementValueUnit', 'XAxisStartValue', 'XAxisStartValueUnit', 'XAxisType', 'DateTime', 'SPEED', 'PWR_KW', 'TORQUE', 'BSFC', 'FUEL_RATE', 'OIL_FILTER_P', 'BLOWBY_L_P', 'CELL_AIR_T', 'IN_MANIFOLD_L_P', 'SMOKE', 'OPACITY', 'TURBO_TUR_OUT_L_P', 'FUEL_IN_P', 'FUEL_IN_T', 'FUEL_OUT_P', 'FUEL_OUT_T', 'COOLANT_IN_P', 'COOLANT_IN_T', 'COOLANT_OUT_P', 'COOLANT_OUT_T', 'TEST_RUN_NAME', 'TEST_COMPLETE_STATUS']

for i in range(0,len(row)):

dic[param[i]]=row[i]

# print len(param),len(row)

#标准化时间格式

(month,day,yeartime) = dic["MeasurementStartTime"].split('/')

# print dic["MeasurementStartTime"]

# print month,day,yeartime[:4],yeartime[4:]

year = yeartime[:4]

daytime = day + yeartime[4:]

if len(month)==1:

month = '0'+month

new_date_patten = '-'.join((year,month,daytime))

# print new_date_patten

dic["MeasurementStartTime"] = new_date_patten

else:

new_date_patten = '-'.join((year,month,daytime))

# print new_date_patten

dic["MeasurementStartTime"] = new_date_patten

# print dic

sql = "insert into gcic_t_csv_data(MeasurementName,MeasurementDescription,MeasurementNumber,MeasurementStartTime,MeasurementVersion,TestName,ReleaseNumber,RunNumber,TestcellParameterFile,EngineParameterFile,TestParameterFile,Frequency,LastAppendingTime,NumberofAppends,TestcellID,Project,EStopChannel,CELL_NAME,CELL_SITE,CELL_TYPE,GRAV_DRIFT,VISC_DRIFT,BARO_DRIFT,HUMI_DRIFT,EngineStartedRecognitionSpeed,EngineIdleMode,EngineIdleDynoSP,EngineIdleEngSP,EngineID,EngineSpeedRampLimit,EngineTorqueRampLimit,EngineThrottleRampLimit,EngineAuxRampLimit,EngineMaxSpeed,EngineMinSpeed,EngineMaxTorque,EngineMinTorque,EngineMaxAux,EngineMinAux,EngineIdleDynoRampTime,EngineIdleEngRampTime,APPLICATION_TYPE,CPL,CPL_REV,CUBIC_CAP,FUEL_PUMP_CODE,FUEL_PUMP_REV,FUEL_PUMP_TYPE,MODEL,TestID,XAxisChannelName,XAxisIncrementValue,XAxisIncrementValueUnit,XAxisStartValue,XAxisStartValueUnit,XAxisType,DateTime,SPEED,PWR_KW,TORQUE,BSFC,FUEL_RATE,OIL_FILTER_P,BLOWBY_L_P,CELL_AIR_T,IN_MANIFOLD_L_P,SMOKE,OPACITY,TURBO_TUR_OUT_L_P,FUEL_IN_P,FUEL_IN_T,FUEL_OUT_P,FUEL_OUT_T,COOLANT_IN_P,COOLANT_IN_T,COOLANT_OUT_P,COOLANT_OUT_T,TEST_RUN_NAME,TEST_COMPLETE_STATUS,LINE_FLAG,referenceid,lastupdateon,lastupdatedby,createdon,createdby,active,rowversionstamp)values('%(MeasurementName)s', '%(MeasurementDescription)s', '%(MeasurementNumber)s', '%(MeasurementStartTime)s', '%(MeasurementVersion)s', '%(TestName)s', '%(ReleaseNumber)s', '%(RunNumber)s', '%(TestcellParameterFile)s', '%(EngineParameterFile)s', '%(TestParameterFile)s', '%(Frequency)s', '%(LastAppendingTime)s', '%(NumberofAppends)s', '%(TestcellID)s', '%(Project)s', '%(EStopChannel)s', '%(CELL_NAME)s', '%(CELL_SITE)s', '%(CELL_TYPE)s', '%(GRAV_DRIFT)s', '%(VISC_DRIFT)s', '%(BARO_DRIFT)s', '%(HUMI_DRIFT)s', '%(EngineStartedRecognitionSpeed)s', '%(EngineIdleMode)s', '%(EngineIdleDynoSP)s', '%(EngineIdleEngSP)s', '%(EngineID)s', '%(EngineSpeedRampLimit)s', '%(EngineTorqueRampLimit)s', '%(EngineThrottleRampLimit)s', '%(EngineAuxRampLimit)s', '%(EngineMaxSpeed)s', '%(EngineMinSpeed)s', '%(EngineMaxTorque)s', '%(EngineMinTorque)s', '%(EngineMaxAux)s', '%(EngineMinAux)s', '%(EngineIdleDynoRampTime)s', '%(EngineIdleEngRampTime)s', '%(APPLICATION_TYPE)s', '%(CPL)s', '%(CPL_REV)s', '%(CUBIC_CAP)s', '%(FUEL_PUMP_CODE)s', '%(FUEL_PUMP_REV)s', '%(FUEL_PUMP_TYPE)s', '%(MODEL)s', '%(TestID)s', '%(XAxisChannelName)s', '%(XAxisIncrementValue)s', '%(XAxisIncrementValueUnit)s', '%(XAxisStartValue)s', '%(XAxisStartValueUnit)s', '%(XAxisType)s', '%(DateTime)s', '%(SPEED)s', '%(PWR_KW)s', '%(TORQUE)s', '%(BSFC)s', '%(FUEL_RATE)s', '%(OIL_FILTER_P)s', '%(BLOWBY_L_P)s', '%(CELL_AIR_T)s', '%(IN_MANIFOLD_L_P)s', '%(SMOKE)s', '%(OPACITY)s', '%(TURBO_TUR_OUT_L_P)s', '%(FUEL_IN_P)s', '%(FUEL_IN_T)s', '%(FUEL_OUT_P)s', '%(FUEL_OUT_T)s', '%(COOLANT_IN_P)s', '%(COOLANT_IN_T)s', '%(COOLANT_OUT_P)s', '%(COOLANT_OUT_T)s', '%(TEST_RUN_NAME)s', '%(TEST_COMPLETE_STATUS)s','%(LINE_FLAG)s','%(referenceid)s', '%(lastupdateon)s', '%(lastupdatedby)s', '%(createdon)s', '%(createdby)s', '%(active)s', '%(rowversionstamp)s')"%dic

# import datetime

# print datetime.datetime.now()

print sql碰到这种情况时,则更能体会到第一种方法的局限。这里只要dic的key值完全包含了sql中的对应字段,这种方式在处理这种复杂数据时,还是比较好用的。

3、str.format()

str = "what i am writing is {}".format('a')

或者

str = "what i am writing is {0}".format('a')

如果要输入{0},则需要使用双括号{{0}}

str = "what i am writing is {0} but not {{0}}".format('a')

str = "the word {0} can use three times, once {0}! and again {0}?".format("eric")

也可以是用类似key,value的方式

var = "{a},{b}".format(a='hello',b = 'world')

关于数字的格式化:

print("{:.2f}".format(3.1415926))

pi = 3.1415926

var = "pi= {:.2}".format(pi)

数字格式化

pi = 3.14159

print(" pi =%1.2f", % pi)

摘:

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

+3.14

带符号保留小数点后两位

-1

{:+.2f}

-1.00

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:0>2d}

05

数字补零 (填充左边, 宽度为2)

5

{:x<4d}

5xxx

数字补x (填充右边, 宽度为4)

10

{:x<4d}

10xx

数字补x (填充右边, 宽度为4)

1000000

{:,}

1,000,000

以逗号分隔的数字格式

0.25

{:.2%}

25.00%

百分比格式

1000000000

{:.2e}

1.00e+09

指数记法

13

{:10d}

13

右对齐 (默认, 宽度为10)

13

{:<10d}

13

左对齐 (宽度为10)

13

{:^10d}

13

中间对齐 (宽度为10)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值