python - 尝试比较文本文件中的多行并通过加入它们来打印
问题描述
如何比较多行并根据第一个单词加入行(如果它们相同)使用 python 我是 python 的初学者并尝试比较文本文件中的多行并通过加入它们来打印。
文本文件
Rolt12 is a musician
Rolt1 is dancer
Rolt1 is an actor
Rolt14 is a singer
我正在尝试打印
Rolt12 is a musician
Rolt1 is a dancer; is an actor
Rolt14 is a singer
到目前为止,我知道打开和写入文件
with open ('input.txt','r') as ifh, with open ('out.txt', 'w') as ofh:
ifh.readlines()
在此之后,我想我应该比较文本文件中的行并检查第一个是否相同。稍后,如果第一个单词相同,请加入他们。但我不知道如何比较和加入他们。任何帮助将不胜感激......谢谢
解决方案
您可以使用字典将每一行分成两部分来解决它,一个带有“名称”,另一部分(没有名称的行的其余部分)。使用名称作为字典中的键。
from collections import defaultdict
with open('data.txt') as fp:
d = defaultdict(list)
for line in fp:
x = line.strip().split(' ', 1)
d[x[0]].append(x[1])
#writing output to new file
with open('output.txt', 'w') as fw:
for k, v in d.items():
fw.write( k + ' ' + '; '.join(v) + '\n')
输出:
Rolt12 is a musician
Rolt1 is dancer; is an actor
Rolt14 is a singer
推荐阅读
- asp.net - 选择下拉 asp.MVC 的列表
- django - 如何在 Admin.py 文件中获取用户 ID 和多选字段值
- html - 使用内部标签使整个列表可点击,同时对整个容器使用网格
- postgresql - postgres 数据库查询。如何使用单引号和双引号以及如何使连接工作
- java - 无法使用 selenium webdriver 运行 java 代码并使用 Eclipse IDE 自动化浏览器
- flutter - “Null”类型不是“List”类型的子类型
'函数结果'错误 - javascript - 使用 android ActionView 意图打开时,Javascript 重定向在 Edge 浏览器中不起作用,但在手动重新加载后工作
- python - 错误 - 'StringMethods' 对象没有属性 'apply' 或 str 没有属性 str
- c# - C#-如何检查给定的2个或3个单词的2个字符串是否有单个字母并比较2个字符串的第一个字母是否相同并返回true或false?
- regex - 用正则表达式在 vscode 中搜索 NOT 字母“s”的正确方法是什么