【发布时间】:2020-11-23 08:11:08
【问题描述】:
我在记事本文件中有一个未格式化的数据,如下所示。
#Civil
GROUP CIVIL RPatel66 LKohli12 m12 PSen72 m72
GROUP CIVIL SKumar22 ASekar32 m32 BSiva90
#Mechanical
GROUP MECHANICAL OKhan78 m78 MShah81 JKumar11
GROUP MECHANICAL VHiremath12 TVasu43 m43 NReddy21
#Electrical
GROUP ELECTRICAL LPathan88 SPatil56 m56 AParth33
GROUP ELECTRICAL HAnil45 m45 Khari67 m67 Skumar49
当我运行下面的代码时
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
f = open('C:\\Users\\Kiran\\Desktop\\Input.txt', 'r+')
data = f.readlines()
spaces = ""
for i in range(len(data)):
row = data[i].split(" ")
ws.append(row)
wb.save("Output1.xlsx")
import openpyxl
book= openpyxl.load_workbook('Output1.xlsx')
sheet = book['Sheet']
sheet.delete_cols(1,2) #deletes Column 1 and 2
book.save("Output1.xlsx")
对于上述情况,我遇到了错误,并且没有获得所需的输出。
我需要在 excel 表中输出如下所示。我需要在 excel 表中输出为 Eg:Rpatel66、LKohli12 等,它不应包含 m12、m72
RPatel66
LKohli12
PSen72
SKumar22
ASekar32
BSiva90
OKhan78
MShah81
JKumar11
VHiremath12
TVasu43
NReddy21
LPathan88
SPatil56
AParth33
HAnil45
Khari67
Skumar49
【问题讨论】:
-
总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
-
all
m12,m72以m开头,长度为3- 所以在你输入excel之前用它来过滤row中的值。但是您似乎没有做任何过滤,您尝试删除什么m12? -
实际上在输出 excel 中我不需要 m12,m72,m32,m78,m43,m56,m45,m67。我不需要那些东西。对于任何给定的文本文件,我只需要“例如:Skumar49”
-
然后在使用
ws.append(row)之前从row中删除m12,m72,m32,m78,m43,m56,m45,m67。但是在您的代码中,您甚至都不会尝试这样做。 -
即。
row = [x for x in row if not (len(x) == 3 and x[0] == 'm')]