我们收到一份包含当月购物清单的文件。总共有5个类别。每个类别中的每件商品都有一个价格(在此类别中的一件商品上花费的金额)和折扣。我需要将具有新价格(考虑折扣计算)的行写入文件,但这些行是用换行符写入的(每个字符串都在新行上,因此只有最后一个字符串写入文件。我怎样才能解决这个问题?
from operator import *
with open('6_4.txt', 'r') as file:
content = file.read()
content = content.split('\n')[1:]
sorted_content = sorted(sorted(content, key=itemgetter(1)))
in_string = '\n'.join(sorted_content)
file.close()
with open('new_list.txt', 'w') as file:
file.write(in_string)
file.close()
with open('new_list.txt', 'r') as file:
for s in file:
content = s.split()
cost = int(content[1]) - (int(content[1]) * (int(content[2]) // 100))
for i, x in enumerate(content):
if x == content[1]:
content[1] = str(cost)
content = content[:-1]
in_string = ' '.join(content)
file.close()
你有太多可疑的点,指出不准确的地方可能需要很长时间,所以更容易展示一些有效的东西,你可以从中得出你需要的东西。
排序不是很清楚,所以如果按类别名称排序,文件看起来像
那么解决方案之一就是这样
1 读取数据并立即计算
或使用 csv
现场排序
并保存
或逐行以免分配额外的内存(尽管你绝对没有元素,只是举例)
以同样的方式,您可以信任保存到 csv 模块
这将在最后多打一个
\n- 这是这个模块的实现(