为了账号安全,请及时绑定邮箱和手机立即绑定

修复比较数据并返回行号和数据

修复比较数据并返回行号和数据

梦里花落0921 2022-05-24 18:18:10
我输入了一个程序来比较车辆 A 价格 (v_priceA) 与 carprices.txt 文本文件中的其他各种车辆价格,这些车辆价格位于新行中。结果应该是一个名为 highprices.txt 的新文本文件,其中所有价格都高于车辆 A 的价格,并在换行符中加上 carprices.txt 中的相关行号我的问题是能够生成两个文本文件,它们具有更大文件的行号,另一个具有更大的价格,而不是更大的价格本身和行号。我需要解决这个问题。车辆A价格:2500.50v_priceA = 2500.50a_file = 'carprices.txt'with open(a_file, 'r') as document:        values = [x for x, value in enumerate(document) if float(value) > v_priceA]new_file = open('highpriceposition.txt', 'w')for x in values:    new_file.write(str(x) + '\n')new_file.close()a_file = 'carprices.txt'with open(a_file, 'r') as document:    values = [value for value in document if float(value) > v_priceA] with open('highprice.txt', 'w') as f:    for x in values:        f.write(str(x)+'\n')位置价格.txt2 2900.003 3500.505 25000.306 45000.50
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

当您写入新文件new_file.write()时,您需要将行号和价格都传递给它。IE


v_priceA = 2500.50

a_file = 'carprices.txt'

output_file = 'highprices.txt'



with open(a_file, 'r') as document:

    with open(output_file, 'w') as new_file:

        for line, price in enumerate(document):

            if float(price) > v_priceA:

                new_file.write(str(line) + " " + str(price))

                # See how I pass both in here?

重要的是要知道,每当您open()在 python 中写入文件时,它都会在写入之前"w"擦除该文件中的任何内容。(如果您有兴趣,还有一个附加选项)。 打开的文档。


请注意我如何在上面的代码中只打开一次输出文件?那应该有帮助。


现在来看看如何enumerate工作。它在 python 中接受一个可迭代对象, 并且对于该可迭代对象中的每个项目返回一个元组,(itemIndex, item)其中至少有一个非常重要的异常,它基本上相当于:


def myEnumerate(iterableParameter):

    i = 0

    outPutList = []

    while i < len(iterableParameter):

        outPutList += (i, iterableParameter[i])

    return outPutList

重要的例外是enumerate创建一个生成器,上面创建一个列表。请参阅进一步阅读。


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信