求解:从txt文件导入字符序列到tablewidget的每个单元格中失败

求解:从txt文件导入字符序列到tablewidget的每个单元格中失败,结果是把txt文件中所有字符到每一个单元格中了,我想实现的是用空格分开的每个字符串单独导入每个单元格中,代码如下,怎样修改错误?


    def kcbopen(self):
        kcbname, _ = QFileDialog.getOpenFileName(self, "Open", "", "*.txt;;All Files(*)")
        if kcbname != "":  # “”为用户取消
            self.textEdit.setText(kcbname)

        data = []
        with open(str(kcbname), 'r') as f:
            for i in f:
                data.append([j for j in i.split(" ")])

        for i in range(self.tableWidget.rowCount()):
            for n in range(self.tableWidget.columnCount()):
                for s in data:
                    self.tableWidget.item(i, n).setText(str(s))

出错动画演示如下:

img

题中代码在读取txt文本文件后,是遍历字符串。尝试将其读取成列表,代码如下:

data=[]
with open('score1.txt', 'r',encoding='utf-8') as f:
    for i in [x.strip() for x in f.read().split('\n')]:
        data.append([j for j in i.split(" ")])
print(data)

F:\2021\qa\ot3>t3
[['学号', '思政', '微积分', '大学英语'], ['1001', '92', '80', '82'], ['1002', '90', '93', '87'], ['1003', '55', '61', '62'], ['1004', '94', '93', '92'], ['1005', '92', '95', '81'], ['1006', '75', '50', '61']]

改成这样

    def kcbopen(self):
        kcbname, _ = QFileDialog.getOpenFileName(self, "Open", "", "*.txt;;All Files(*)")
        if kcbname != "":  # “”为用户取消
            self.textEdit.setText(kcbname)
        data = []
        with open(str(kcbname), 'r') as f:
            for i in f:
                data.append([j for j in i.strip().split(" ")])
        for i in range(self.tableWidget.rowCount()):
            for n in range(self.tableWidget.columnCount()):
                self.tableWidget.item(i, n).setText(data[i][n])

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img