python - 当两个文件的最后一位相同时打印行
问题描述
我有一个文件1
AI21T A1,A2,B,Zn |3
AN3DT A1,A2,Z |2
AO22T A1,A2,B,Z |3
BUFF1 I,Z |1
和 file2 作为
AO22T A1,A2,B,Z |3
我想将 file2 的最后一位与 file1 的最后一位进行比较,如果匹配,则从 fout 文件中的 file1 打印该匹配行。输出应该是 fout
AI21T A1,A2,B,Zn |3
AO22T A1,A2,B,Z |3
我试过代码
f1=open("file1","r")
f2=open("file2","r")
fo=open("fout","w")
for line1 in f1:
l1=line1.strip()
for line2 in f2:
l2=line2.strip()
if l1[-1:].isdigit()==l2[-1:].isdigit():
data=f1.readlines()
print >> fo,data
但是在比较和写入文件时出现错误。
解决方案
假设您首先将数据放入类似于以下内容的列表中:
f1 =[
"AI21T A1,A2,B,Zn |3",
"AN3DT A1,A2,Z |2",
"AO22T A1,A2,B,Z |3",
"BUFF1 I,Z |1"
]
f2 = [
"AO22T A1,A2,B,Z |3"
]
这将使您可以轻松地循环遍历文件的数据,而不必担心换行符。
然后,您可以遍历 file1 中的数据并遍历 file2 中的数据:
for line1 in f1:
for line2 in f2:
if line1[-1] == line2[-1]: # compare the last digit of each line
# write to file, etc.
如果您正在寻找单行,您可以使用 list-comprehension 创建一个新列表,其中包含 file1 中与 file2 中的行具有共同最后一位的所有行:
common = [line1 for line1 in f1 for line2 in f2 if line1[-1] == line2[-1]]
输出:
['AI21T A1,A2,B,Zn |3', 'AO22T A1,A2,B,Z |3']
然后,您可以轻松地写入文件:
for line in common:
fo.write(f"{line}\n")
推荐阅读
- mysql - 使用时区进行查询的最佳方法
- reactjs - 使用没有离子的电容器社区/admob
- docker - Docker内部网络和要连接的外部系统在同一范围内,即172.160.0.0/16
- c# - 替换 Rhino 模拟 GetArgumentsForCallsMadeOn() 用于 Moq Callback() 不接收原始参数
- python - 如何在同一目录中导入其他脚本?
- excel - Office-addin 复习测试笔记 1220.4.1
- angular - 在 monorepo 中的每个项目上隔离 typescript 构建/编译?
- java - 有没有办法按日期过滤实体,从另一个表中检索该日期,并带有休眠注释?
- crystal-reports - Crystal Reports - 整个组重复
- ssh - Bitbucket ssh 管道失败 - 命令字符串丢失或为空