我正在从in.txt
读取数据并从中写入特定的行至Sample.xlsx
。当我解析输入数据的这一部分时,我在包含start
和end
的行与我设置的Flag
之间的数据进行了刷新。当设置为Flag
时,每当我遇到NAME:
和AGE:
行时,它需要分别写入C和D列(额外信息:输入文件具有以下模式:第一行包含NAME
,下一行包含AGE
后跟空行并重复这种模式)。写入xlsx在一个单元格中创建重复的行
start is here
NAME:Abe
AGE:40
NAME:John
AGE:20
...
end
输入与上述类似。现在问题是我有大约1000条这样的线路,所以大概333个名字,年龄。当我运行代码后打开Excel表时,我看到C2有NAME:Abe
重复了21次。 D2也有AGE:40
重复21次。我将输入减少到100行,重复次数减少到3.我似乎无法弄清楚为什么会发生这种情况。当我改为10行,即只有3个名字和年龄时,这个问题就不会发生。 C2只有一个名字,C3也有一个名字。
from openpyxl import Workbook, load_workbook
fin = open('in.txt')
fout1 = open('name.txt','w')
fout2 = open('age.txt','w')
wb = Workbook()
ws = wb.active
i = 2
Flag = False
for lines in fin:
if 'start' in lines:
Flag = True
continue
if Flag and 'end' in lines:
break
if Flag:
if 'NAME:' in lines:
fout1.write(lines)
ws['C'+str(i)] = lines
elif 'AGE:' in lines:
fout2.write(lines)
ws['D'+str(i)] = lines
i += 1
wb.save(filename = 'Sample.xlsx')
长时间写道歉。但请让我知道我在这里做错了什么。
感谢您的阅读。
______________________________________编辑-1 ________________________________
我只是想写作基础,从文本文件到Excel中使用下面的最少的代码单元。
for line in fin:
ws['C'+str(i)] = line
i += 1
这也会产生相同的错误。线在单元格内被多次写入。而且它重复的次数会根据输入文本文件中的行数增加。
__________________________________编辑-2 __________________________________
我似乎已经解决了这一问题,但仍然不知道为什么它被认为是固定的。由于字符串打印没有任何问题,我从lines
中删除了最后一个字符,它应该是下一行字符。现在一切都按预期工作。我不确定这是否是一个合适的解决方案,或者为什么会发生这种情况。无论如何,下面给出的代码似乎解决了这个问题。
for line in fin:
ws['C'+str(i)] = line[:-1]
i += 1
我怀疑你的柜台有问题。您应该添加一些调试代码,以查看它是否按照您的要求运行。 –
我也这么认为。但是我把'ws ['C'+ str(i)] = lines'改成了'ws ['C'+ str(i)] ='hello',对D列也是类似的。然后''hello ''在一个单元中只出现一次。当我将当前的“线路”分配给该单元时,会发生问题。它只是重复多次。 – akhilc
此外,我正在写文本文件的名字和年龄以及相同的条件语句。而文本文件输出没有任何重复。 – akhilc