Python 3.x 如何合并文本文件中的行?
我有一个如下所示的文本文件:Python 3.x 如何合并文本文件中的行?,python-3.x,text,Python 3.x,Text,我有一个如下所示的文本文件: 100 Spam 250 Spam 50 Spam 20 Eggs 70 Eggs 300 Spam 90 Eggs new_list = [] j = 1 for i in range(len(old_list)): new_list.append("") if old_list[i][4:] == old_list[i-j][4:]: new_list[i-j][:4] = str(int(old_li
100 Spam
250 Spam
50 Spam
20 Eggs
70 Eggs
300 Spam
90 Eggs
new_list = []
j = 1
for i in range(len(old_list)):
new_list.append("")
if old_list[i][4:] == old_list[i-j][4:]:
new_list[i-j][:4] = str(int(old_list[i][:4].strip()) + int(old_list[i-j][:4].strip())).ljust(4)
new_list[i-j][4:] = old_list[i-j][4:]
j += 1
else:
new_list[i-j] = old_list[i-j]
现在我想将这些行合并到一个新文件中,如下所示:
100 Spam
250 Spam
50 Spam
20 Eggs
70 Eggs
300 Spam
90 Eggs
new_list = []
j = 1
for i in range(len(old_list)):
new_list.append("")
if old_list[i][4:] == old_list[i-j][4:]:
new_list[i-j][:4] = str(int(old_list[i][:4].strip()) + int(old_list[i-j][:4].strip())).ljust(4)
new_list[i-j][4:] = old_list[i-j][4:]
j += 1
else:
new_list[i-j] = old_list[i-j]
我把文件逐行读进一个列表。现在,我循环浏览列表中的每个项目,如下所示:
100 Spam
250 Spam
50 Spam
20 Eggs
70 Eggs
300 Spam
90 Eggs
new_list = []
j = 1
for i in range(len(old_list)):
new_list.append("")
if old_list[i][4:] == old_list[i-j][4:]:
new_list[i-j][:4] = str(int(old_list[i][:4].strip()) + int(old_list[i-j][:4].strip())).ljust(4)
new_list[i-j][4:] = old_list[i-j][4:]
j += 1
else:
new_list[i-j] = old_list[i-j]
我在这方面遇到了两个问题:
我是编程新手,所以也许有更好的方法来解决这个问题?此解决方案仅限于您提供的输入。 作为第一种天真的方法,我将问题分为三个部分:
旧列表
,其中每个元素都是一个元组(值、键)old_list=[(100,'Spam')、(250,'Spam')、(50,'Spam')、(20,'Eggs')、(70,'Eggs')]
result={}
对于旧列表中的元素:
如果结果中的元素[1]:
结果[elem[1]+=elem[0]
其他:
结果[elem[1]]=elem[0]
对于old_list
中的每个元素,如果您已经看到具有相同键的项,请将其值相加并继续。否则,使用当前值将键添加到结果dict
祝你好运 此解决方案仅限于您提供的输入。 作为第一种天真的方法,我将问题分为三个部分:
旧列表
,其中每个元素都是一个元组(值、键)old_list=[(100,'Spam')、(250,'Spam')、(50,'Spam')、(20,'Eggs')、(70,'Eggs')]
result={}
对于旧列表中的元素:
如果结果中的元素[1]:
结果[elem[1]+=elem[0]
其他:
结果[elem[1]]=elem[0]
对于old_list
中的每个元素,如果您已经看到具有相同键的项,请将其值相加并继续。否则,使用当前值将键添加到结果dict
file = open("file.txt", "w+")
input = file.read().split("\n")
output = {}
for line in input:
line = line.split(" ")
if line[1] in output:
output[line[1]] += int(line[0])
else:
output[line[1]] = int(line[0])
for line in output:
file.write(line + " " + str(output[line]) + "\n")
试试这个:
file = open("file.txt", "w+")
input = file.read().split("\n")
output = {}
for line in input:
line = line.split(" ")
if line[1] in output:
output[line[1]] += int(line[0])
else:
output[line[1]] = int(line[0])
for line in output:
file.write(line + " " + str(output[line]) + "\n")
然后您可以将结果
写入一个新文件
with open("some_other_file.txt") as outfile:
for food_item, amount in result.items():
outfile.write(f"{amount} {food_item}\n")
然后您可以将结果
写入一个新文件
with open("some_other_file.txt") as outfile:
for food_item, amount in result.items():
outfile.write(f"{amount} {food_item}\n")