isinstance not outputting anything
我的代码在使用
1 2 | output = 'From Bus #: {}\tTo Bus #: {}\tTo Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' print(output.format(from_, to,name2, min_value, max_value,last_bus)) |
Excel表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | from __future__ import print_function import os.path import win32com.client #--------------------------------------------------------------------------------------------------------------------- xlApp = win32com.client.DispatchEx('Excel.Application') # Running Excel xlsPath = os.path.expanduser('C:\Users oszkowskiM\Desktop\UPDATED_LOAD_FORECAST_4.xlsm')# Reading xlsm file wb = xlApp.Workbooks.Open(Filename=xlsPath) # Opening file xlApp.Run('csvfile2')# Running macro---- csvfile2 is the macro name. It is under the"csv" module in the VBA editor wb.Save() xlApp.Quit() #--------------------------------------------------------------------------------------------------------------------- # WHEN RUNNING THE PROGRAM, MAKE SURE THE CSV FILE IS NOT OPEN. # THIS WILL PRODUCE AN ERROR WITH READING AND RUNNING THE MACRO. # THE EXCEL WORKBOOK CAN BE OPEN WHEN RUNNING THE PROGRAM import os, sys #-------------------------------------------------------------------------- #PSSE_LOCATION = r"C:\Program Files (x86)\PTI\PSSE33\PSSBIN" #Locating PSSE #sys.path.append(PSSE_LOCATION) #os.environ['PATH'] = os.environ['PATH'] + ';' + PSSE_LOCATION #-------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------------------- #import psspy #import redirect import csv #psspy.throwPsseExceptions = True from Tkinter import * # File Dialog import tkFileDialog import tkSimpleDialog import tkMessageBox import Tkinter as tk #Pop up window for picking file on PSSE #root = tk.Tk() #root.withdraw() #tkMessageBox.showinfo("Welcome","Please select case:") #root.fileName= tkFileDialog.askopenfilename( filetypes = ( ("PSSE CASES","*.sav"), ("PSSE CASES","*.raw*") ) ) #STUDY_CASE=root.fileName #psspy.psseinit(10000) # Intialize PSSE #psspy.case(STUDY_CASE) # Upload Case LOAD_GEN_DATAFILE = 'C:\Users M\Desktop\Data_2017.csv' # CSV File to Read # read the entire CSV into Python. # CSV has columns starting with Year,busnum,busname,scaled_power,tla,location,empty,year_link,from_,to,digit,min_value,max_value,last_bus #------------------------------------------------------------------------------- # read the entire CSV into Python. # CSV has columns starting with Year,busnum,busname,scaled_power,tla,location data = list(csv.reader(open(LOAD_GEN_DATAFILE))) mydict = {} for row in data: Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16] #If this is a year not seen before, add it to the dictionary if Year not in mydict: mydict[Year] = {} busses_in_year = mydict[Year] if data_location not in busses_in_year: busses_in_year[data_location] = [] #Add the bus to the list of busses that stop at this location busses_in_year[data_location].append((busnum,busname,scaled_power)) #------------------------------------------------------------------------------- #------------------------------------------------------------------------------------------------------------------------------------- #User Input Statement year = raw_input("Please Select Year of Study:") print(" ") location=raw_input(" The list above show the TLA Pockets as well as the ID numbers assigned to them () Please enter the ID #:") #psspy.prompt_output(islct = 6) print(" ") Year=year data_location=location #--------------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------LOAD FORECASTS-------------------------------------------------------------------- if Year in mydict and data_location in mydict[Year]: busses_in_year = mydict[Year] #print("Here are all the busses at that location for that year and the new LOAD TOTAL:") #print(" ") #Busnum, busname,scaled_power read from excel sheet matching year and location for busnum,busname,scaled_power in busses_in_year[data_location]: scaled_power= float(scaled_power) busnum = int(busnum) output='Bus #: {}\t Area Station: {}\t New Load Total: {} MW\t' print(output.format(busnum,busname,scaled_power)) #psspy.bsys(1,0,[0.0,0.0],0,[],1,[busnum],0,[],0,[]) #psspy.scal_2(1,0,1,[0,0,0,0,0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0]) #psspy.scal_2(0,1,2,[0,1,0,1,0],[scaled_power,0.0,0,-.0,0.0,-.0,0]) else: exit #-------------------------------------------------LOAD FORECASTS-------------------------------------------------------------------- #------------------------------------------------VOLTAGE ENVLOPES--------------------------------------------------------------------------------------------------------------------------------- for row in data: year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] output = 'From Bus #: {}\tTo Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' if year_link == year and tla_2==location: from_=int(from_) to=int(to) min_value=float(min_value) max_value=float(max_value) digit=int(digit) print(output.format(from_, to,name2, min_value, max_value)) #_c=psspy.getdefaultchar() #_i=psspy.getdefaultint() #_f=psspy.getdefaultreal() #psspy.two_winding_chng_4(from_,to,'%d'% digit,[_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f],[]) else: exit for row in data: year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] if year_link==year and tla_2==location and isinstance(last_bus, int): output = 'From Bus #: {}\tTo Bus #: {}\tLast Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' print(output.format(from_, to,name2, min_value, max_value,last_bus)) min_value=float(min_value) max_value=float(max_value) #psspy.three_wnd_winding_data_3(from_,to,last_bus,r"""1""",1,[_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f]) else: exit #------------------------------------------------VOLTAGE ENVLOPES---------------------------------------------------------------------------------------------------------------------------------- os.remove(LOAD_GEN_DATAFILE) |
因此,您的
有几种方法可以检查字符串是否实际上是整数。我不会在这里解释它们,这将是多余的,有很多已经回答的问题,但是检查这个问答(它有到其他问答的链接)来实现您的选择之一:如何检查字符串在python中是否有数值?
一旦确定字符串包含整数,只需执行
好吧,我照你说的做了。它输出正确,但不输出到
1 2 3 4 5 6 7 8 9 10 11 12 13 | for row in data: year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] if isinstance(last_bus, str) and year_link==year and tla_2==location and last_bus.isdigit() is True: min_value=float(min_value) max_value=float(max_value) last_bus=int(last_bus) output = 'From Bus #: {}\tTo Bus #: {}\tLast Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' print(output.format(from_, to,last_bus,name2, min_value, max_value)) print(" ") psspy.three_wnd_winding_data_3(from_,to,last_bus=int(last_bus),r"""1""",1,[_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f]) else: exit |