gpt4 book ai didi

python - 写入 xlsx 在一个单元格中创建重复行

转载 作者:行者123 更新时间:2023-11-28 18:29:39 26 4
gpt4 key购买 nike

我正在从 in.txt 读取数据并将特定的行写到 Sample.xlsx .我在包含 start 的行之间搜索数据和 end我设置了Flag当我解析这部分输入数据时。当Flag设置好了,每当遇到NAME:AGE:在行中,它需要分别写入 C 和 D 列(额外信息:输入文件具有以下模式:第一行包含 NAME ,下一行包含 AGE 后跟一个空行,并且重复此模式)。

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

最佳答案

尝试避免在 Python 中使用计数器是可能的,也是明智的。以下代码更具表现力和可维护性。

from openpyxl import Workbook, load_workbook
fin = open('in.txt', 'r')

wb = Workbook()
ws = wb.active
ws.append([None, None, "NAME", "AGE"])

Flag = False
for line in fin.readlines():

if line.startswith("start"):
Flag = True
row = [None, None, None, None]

elif line.startswith("end"):
break

elif Flag:
if line.startswith('NAME:'):
row[2] = line[5:]

elif line.startswith('AGE:'):
row[3] = int(line[4:])
ws.append(row)

wb.save(filename = 'Sample.xlsx')
fin.close()

关于python - 写入 xlsx 在一个单元格中创建重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38430472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com