如果行为空,如何检查每一列?
How to check for each column if row is empty?
我创建了一个从 .txt 文件中检索数据的简单程序。 .txt文件的一小部分:
(和)之间的4位数字和<和>之间的十六进制数是数据,我指的是。
切片后,我想将数据写入 excel 文件。
我写了(一个丑陋的)代码,它会记住行号并将数据写入下面每列的单元格(总共 9 列)
是否有更好的方法来获得相同的结果?我想改进。
import openpyxl
infile = open('test.txt')
s = infile.readlines()
wb = openpyxl.load_workbook(filename='Main.xlsx')
ws = wb.active
VariableRow1 = 2
VariableRow2 = 2
VariableRow3 = 2
VariableRow4 = 2
VariableRow5 = 2
VariableRow6 = 2
VariableRow7 = 2
VariableRow8 = 2
VariableRow9 = 2
for i in range(len(s)):
if '<' in s[i] and '(' in s[i]:
PijlOpen = s[i].find('<')
PijlDicht = s[i].find('>')
HaakjeOpen = s[i].find('(')
HaakjeDicht = s[i].find(')')
Number = (s[i])[HaakjeOpen + 1:HaakjeDicht]
Number = Number.replace('0', '')
Value = (s[i])[PijlOpen + 1:PijlDicht]
Value = Value.replace(' ', '')
Value = bytes.fromhex(Value).decode('utf-8')
Number = int(Number)
if Number == 1:
if ws.cell(row=VariableRow1, column=Number).value != None:
VariableRow1 += 1
cell = ws.cell(row=VariableRow1, column=Number)
cell.value = Value
if Number == 2:
if ws.cell(row=VariableRow2, column=Number).value != None:
VariableRow2 += 1
cell = ws.cell(row=VariableRow2, column=Number)
cell.value = Value
if Number == 3:
if ws.cell(row=VariableRow3, column=Number).value != None:
VariableRow3 += 1
cell = ws.cell(row=VariableRow3, column=Number)
cell.value = Value
if Number == 4:
if ws.cell(row=VariableRow4, column=Number).value != None:
VariableRow4 += 1
cell = ws.cell(row=VariableRow4, column=Number)
cell.value = Value
if Number == 5:
if ws.cell(row=VariableRow5, column=Number).value != None:
VariableRow5 += 1
cell = ws.cell(row=VariableRow5, column=Number)
cell.value = Value
if Number == 6:
if ws.cell(row=VariableRow6, column=Number).value != None:
VariableRow6 += 1
cell = ws.cell(row=VariableRow6, column=Number)
cell.value = Value
if Number == 7:
if ws.cell(row=VariableRow7, column=Number).value != None:
VariableRow7 += 1
cell = ws.cell(row=VariableRow7, column=Number)
cell.value = Value
if Number == 8:
if ws.cell(row=VariableRow8, column=Number).value != None:
VariableRow8 += 1
cell = ws.cell(row=VariableRow8, column=Number)
cell.value = Value
if Number == 9:
if ws.cell(row=VariableRow9, column=Number).value != None:
VariableRow9 += 1
cell = ws.cell(row=VariableRow9, column=Number)
cell.value = Value
wb.save(filename='Main.xlsx')
print ('Finished')
可以通过使用列表而不是 9 个变量来减少代码:
试试这个代码:
import openpyxl
infile = open('test.txt')
s = infile.readlines()
wb = openpyxl.load_workbook(filename='Main.xlsx')
ws = wb.active
VariableRow = [2]*9 # index 0-8
for i in range(len(s)):
if '<' in s[i] and '(' in s[i]:
PijlOpen = s[i].find('<')
PijlDicht = s[i].find('>')
HaakjeOpen = s[i].find('(')
HaakjeDicht = s[i].find(')')
Number = (s[i])[HaakjeOpen + 1:HaakjeDicht]
Number = Number.replace('0', '')
Value = (s[i])[PijlOpen + 1:PijlDicht]
Value = Value.replace(' ', '')
Value = bytes.fromhex(Value).decode('utf-8')
Number = int(Number)
if number in range(1,10): # 1-9
if ws.cell(row=VariableRow[number-1], column=Number).value != None:
VariableRow[number-1] += 1
cell = ws.cell(row=VariableRow[number-1], column=Number)
cell.value = Value
wb.save(filename='Main.xlsx')
print ('Finished')
我创建了一个从 .txt 文件中检索数据的简单程序。 .txt文件的一小部分:
(和)之间的4位数字和<和>之间的十六进制数是数据,我指的是。 切片后,我想将数据写入 excel 文件。
我写了(一个丑陋的)代码,它会记住行号并将数据写入下面每列的单元格(总共 9 列)
是否有更好的方法来获得相同的结果?我想改进。
import openpyxl
infile = open('test.txt')
s = infile.readlines()
wb = openpyxl.load_workbook(filename='Main.xlsx')
ws = wb.active
VariableRow1 = 2
VariableRow2 = 2
VariableRow3 = 2
VariableRow4 = 2
VariableRow5 = 2
VariableRow6 = 2
VariableRow7 = 2
VariableRow8 = 2
VariableRow9 = 2
for i in range(len(s)):
if '<' in s[i] and '(' in s[i]:
PijlOpen = s[i].find('<')
PijlDicht = s[i].find('>')
HaakjeOpen = s[i].find('(')
HaakjeDicht = s[i].find(')')
Number = (s[i])[HaakjeOpen + 1:HaakjeDicht]
Number = Number.replace('0', '')
Value = (s[i])[PijlOpen + 1:PijlDicht]
Value = Value.replace(' ', '')
Value = bytes.fromhex(Value).decode('utf-8')
Number = int(Number)
if Number == 1:
if ws.cell(row=VariableRow1, column=Number).value != None:
VariableRow1 += 1
cell = ws.cell(row=VariableRow1, column=Number)
cell.value = Value
if Number == 2:
if ws.cell(row=VariableRow2, column=Number).value != None:
VariableRow2 += 1
cell = ws.cell(row=VariableRow2, column=Number)
cell.value = Value
if Number == 3:
if ws.cell(row=VariableRow3, column=Number).value != None:
VariableRow3 += 1
cell = ws.cell(row=VariableRow3, column=Number)
cell.value = Value
if Number == 4:
if ws.cell(row=VariableRow4, column=Number).value != None:
VariableRow4 += 1
cell = ws.cell(row=VariableRow4, column=Number)
cell.value = Value
if Number == 5:
if ws.cell(row=VariableRow5, column=Number).value != None:
VariableRow5 += 1
cell = ws.cell(row=VariableRow5, column=Number)
cell.value = Value
if Number == 6:
if ws.cell(row=VariableRow6, column=Number).value != None:
VariableRow6 += 1
cell = ws.cell(row=VariableRow6, column=Number)
cell.value = Value
if Number == 7:
if ws.cell(row=VariableRow7, column=Number).value != None:
VariableRow7 += 1
cell = ws.cell(row=VariableRow7, column=Number)
cell.value = Value
if Number == 8:
if ws.cell(row=VariableRow8, column=Number).value != None:
VariableRow8 += 1
cell = ws.cell(row=VariableRow8, column=Number)
cell.value = Value
if Number == 9:
if ws.cell(row=VariableRow9, column=Number).value != None:
VariableRow9 += 1
cell = ws.cell(row=VariableRow9, column=Number)
cell.value = Value
wb.save(filename='Main.xlsx')
print ('Finished')
可以通过使用列表而不是 9 个变量来减少代码:
试试这个代码:
import openpyxl
infile = open('test.txt')
s = infile.readlines()
wb = openpyxl.load_workbook(filename='Main.xlsx')
ws = wb.active
VariableRow = [2]*9 # index 0-8
for i in range(len(s)):
if '<' in s[i] and '(' in s[i]:
PijlOpen = s[i].find('<')
PijlDicht = s[i].find('>')
HaakjeOpen = s[i].find('(')
HaakjeDicht = s[i].find(')')
Number = (s[i])[HaakjeOpen + 1:HaakjeDicht]
Number = Number.replace('0', '')
Value = (s[i])[PijlOpen + 1:PijlDicht]
Value = Value.replace(' ', '')
Value = bytes.fromhex(Value).decode('utf-8')
Number = int(Number)
if number in range(1,10): # 1-9
if ws.cell(row=VariableRow[number-1], column=Number).value != None:
VariableRow[number-1] += 1
cell = ws.cell(row=VariableRow[number-1], column=Number)
cell.value = Value
wb.save(filename='Main.xlsx')
print ('Finished')