gpt4 book ai didi

Python:测试单元格是否为空时无限循环

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:37 28 4
gpt4 key购买 nike

我是一名新程序员,正在尝试制作工具来让我的工作变得更轻松。这是我的代码以及我从中得到的错误。我的问题是,在循环处理中,当用户输入“空”时,它不会停止在最快的空单元格处,而是迭代到 xlwt 可以处理的行数的末尾(65536)。该代码旨在仅处理一列。

这是错误:

  File "sentenceconverter.py", line 114, in <module>
db1.write(i,0,new_cell)
File "C:\Python27\lib\site-packages\xlwt\Worksheet.py", line 1030, in write
self.row(r).write(c, label, style)
File "C:\Python27\lib\site-packages\xlwt\Worksheet.py", line 1078, in row
self.__rows[indx] = self.Row(indx, self)
File "C:\Python27\lib\site-packages\xlwt\Row.py", line 42, in __init__
raise ValueError("row index (%r) not an int in range(65536)" % rowx)
ValueError: row index (65536) not an int in range(65536)

`这是代码(由于我所做的编辑,我的一些评论不准确):

#import everything
import xlrd
import xlwt
import sys
from sys import argv
import string

#get workbooks from command line
script,workbook1,destination = argv

#set the limit of cells to loop through
#cellnum=raw_input("How many cells do you want to work with?")

#open the workbooks for working with
wb=xlrd.open_workbook(workbook1)
sh=wb.sheet_by_index(0)
db=xlwt.Workbook()

#manage db for writing
db1=db.add_sheet('Definition')
new_cell=[]
cell_l=""
printable=string.printable
printable_n=printable.replace(".","").replace(":","").replace(string.lowercase,"").replace(string.uppercase,"")
printable_m=printable_n
#main loop
i=0
answer=raw_input("Til [empty] or til [row]?")
if answer == "row":
cellnum=raw_input("How many rows? do you want to work with?")
while i<=(int(cellnum)-1):
new_cell=[]
#reference correct cell and convert it to string format from unicode
cell_x=sh.cell_value(i,0)
cell_str=cell_x


#capitalize
if cell_str[0].islower():
cell_str_2=cell_str.capitalize()
else:
cell_str_2=cell_str
#add period
if any((c in printable_m) for c in cell_str_2[-1]):
#if cell_str_2[-1].contains(printable_m):
cell_str_f=cell_str_2[:-1]
new_cell+=cell_str_f+"."+"\n"
elif cell_str_2[-1]!="." and cell_str_2[-1]!=":":
new_cell+=cell_str_2+"."+"\n"
else:
new_cell+=cell_str_2+"\n"

#add cell to new sheet
db1.write(i,0,new_cell)

#iterate to next cell
i+=1
elif answer =="empty":
cell_type = sh.cell_type(i,0)
cell_x=sh.cell_value(i,0)
t=1
while t>0:
if cell_type == xlrd.XL_CELL_EMPTY:
t=0
else:
new_cell=[]
cell_str=cell_x

#capitalize
if cell_str[0].islower():
cell_str_2=cell_str.capitalize()
else:
cell_str_2=cell_str
#add period
if any((c in printable_m) for c in cell_str_2[-1]):
cell_str_f=cell_str_2[:-1]
new_cell+=cell_str_f+"."+"\n"
elif cell_str_2[-1]!="." and cell_str_2[-1]!=":":
new_cell+=cell_str_2+"."+"\n"
else:
new_cell+=cell_str_2+"\n"


#add cell to new sheet
db1.write(i,0,new_cell)

#iterate to next cell
i+=1
#db1.write(i,0,new_cell)
else:
sys.exit("Didn't work. Make sure you input everything as prompted.")

#save and close
db.save(destination)

`

最佳答案

我猜您希望 cell_typecell_x 始终是 i,0 处单元格的类型和值,即使 i > 变化。如果是这样,您应该将它们分配在 while 循环内部,而不是外部。

    while t>0:
cell_type = sh.cell_type(i,0)
cell_x=sh.cell_value(i,0)
if cell_type == xlrd.XL_CELL_EMPTY:
t=0
else:
new_cell=[]
cell_str=cell_x
#...etc

关于Python:测试单元格是否为空时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com