Python 如何在用户输入中为索引切片设置空值?
我正在开发一个程序,通过用户输入的键和索引将文本文件转换为json格式。当每个输入框都由整数填充时,它会工作,但每当有空列时,它就会返回错误Python 如何在用户输入中为索引切片设置空值?,python,tkinter,indexing,slice,Python,Tkinter,Indexing,Slice,我正在开发一个程序,通过用户输入的键和索引将文本文件转换为json格式。当每个输入框都由整数填充时,它会工作,但每当有空列时,它就会返回错误 file_data[key3EntryName.get()]=content[int(key3EntryStartIndex.get()):int(key3EntryEndIndex.get())]值错误:以10为基数的int()的文本无效:“” 因为我需要将start index带到字符串的末尾,所以我需要file\u data[name]=conten
file_data[key3EntryName.get()]=content[int(key3EntryStartIndex.get()):int(key3EntryEndIndex.get())]值错误:以10为基数的int()的文本无效:“”
因为我需要将start index
带到字符串的末尾,所以我需要file\u data[name]=content[5://code>。但问题是,我不能将结束索引
保留在输入框中为空。那么,如何为空列分配空值呢
我的节目
我的代码
try:
for content in data2:
file_data [key1EntryName.get()] = content[int(key1EntryStartIndex.get()):int(key1EntryEndIndex.get())]
file_data [key2EntryName.get()] = content[int(key2EntryStartIndex.get()):int(key2EntryEndIndex.get())]
file_data [key3EntryName.get()] = content[int(key3EntryStartIndex.get()):int(key3EntryEndIndex.get())]
file_data [key4EntryName.get()] = content[int(key4EntryStartIndex.get()):int(key4EntryEndIndex.get())]
file_data [key5EntryName.get()] = content[int(key5EntryStartIndex.get()):int(key5EntryEndIndex.get())]
# output to JSON
global tmp
tmp = json.dumps(file_data, ensure_ascii=False, indent="\t") + "\n" + "\n"
reviewjson.insert(END, tmp)
except:
raise
使用try-except块创建函数,如果出现异常,则返回None
def转换器(值):
尝试:
value=int(值)
除值错误外:
值=无
返回值
下面是一个示例代码
from tkinter import *
import random
file_data = {'data1': 0, 'data2': 0, 'data3':0, 'data4': 0}
content = [random.randint(30, 5000) for x in range(50)]
print(content)
def convertToInt(value):
try:
value = int(value)
except ValueError:
value = None
return value
def update():
for key, entry in zip(keyEntries, entries):
if key.get() in file_data:
index1, index2 = convertToInt(entry[0].get()), convertToInt(entry[1].get())
if (index1 and index2) is not None and index1 > index2:
index2=None
file_data[key.get()]=content[index1:index2]
print(file_data)
root = Tk()
entries = []
keyEntries = []
for x in range(4):
keyName = Entry(root)
keyName.grid(row=x, column=0)
entry1 = Entry(root)
entry1.grid(row=x, column=1)
entry2 = Entry(root)
entry2.grid(row=x, column=2)
entries.append([entry1, entry2])
keyEntries.append(keyName)
Button(root, text='Update', command=update).grid(row=4, column=0)
root.mainloop()
(注意:键是{'data1'、'data2'、'data3'、'data4'},必须在第一列中指定键才能更新值)您可以先检查如果startindex为空,则将其设置为0,如果endindex为空,则执行内容[start:]
。但是盲目地将输入转换为int会带来更大的问题。如果有人提供了一个生成和索引器的数字,会怎么样?如果有人不是写有效整数,而是写字符串,那么脚本应该如何运行?如果我直接将0设置为空列,脚本将认为0是索引,因此它将不起作用。除此方法外,我尝试了if-else
验证每个用户输入。成功了。但是它的代码太多了