Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在用户输入中为索引切片设置空值?_Python_Tkinter_Indexing_Slice - Fatal编程技术网

Python 如何在用户输入中为索引切片设置空值?

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

我正在开发一个程序,通过用户输入的键和索引将文本文件转换为json格式。当每个输入框都由整数填充时,它会工作,但每当有空列时,它就会返回错误
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
验证每个用户输入。成功了。但是它的代码太多了