gpt4 book ai didi

Python文件输入/输出

转载 作者:行者123 更新时间:2023-11-28 22:49:43 25 4
gpt4 key购买 nike

我写了这段代码来解析输入文件中的行输入格式:电影 ID 可以有多个条目,所以我们应该计算平均值输出:**没有重复(这是问题所在)

import re
f = open("ratings2.txt", "rb")
fo = open("ratings3.txt", "wb")
lines = f.readlines()
movielist=[]
for line in lines:
m_obj = re.search(r"<(\S+), (\S+)>", line)
x= m_obj.group(1)
ratinglist=[]
if x not in movielist:
movielist.append(x)
for subline in lines:
n_obj = re.search(r"<(\S+), (\S+)>", subline)
if n_obj.group(1)==x:
ratinglist.append(float(n_obj.group(2)))
av= (float(sum(ratinglist))/float(len(ratinglist)))
final= "<%s, %f>\n" %(n_obj.group(1), av)
fo.write(final)
f.close()
fo.close()

输入文件:

<122, 5>
<185, 5>
<122,4.5>

期望的输出:

<122, 4.75>
<185, 5>

但这里的问题似乎是代码对每个实例进行了两次循环并添加了一行实例第一个条目...有人可以帮忙吗?

实际输出:

<122, 5>
<122, 4.75>
<185, 5>

最佳答案

“if x not in movielist”这一行对于第一行和第二行都为真。对于第一行,当您读取第二个循环中的所有行时,“if n_obj.group(1)==x”对于第一行和第三行将为真(如果 122 == 122)。所以“fo.write(final)”这一行将被执行两次。在程序的整个运行过程中,“fo.write(final)”会被执行三次,所以你会得到三行输出。

至少这解释了为什么你得到三行而不是预期的两行。

关于Python文件输入/输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23451377/

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