首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较文件A和B中的值的Python方法,如果A匹配,则从B打印整行

比较文件A和B中的值的Python方法,如果A匹配,则从B打印整行
EN

Stack Overflow用户
提问于 2018-07-13 00:14:39
回答 2查看 60关注 0票数 1

我有两个文本文件:

myfile1:

sports1
sports2
sports3
sports4
sports5
sports6
sports7
sports8

myfile2:

sports1  Cricket
sports2  golf
sports3  Hocky
sports4
sports5  Chess
sports6  Snooker
sports7  Foosball
sports8  Tampts

从上面的两个文件中,f myfile1中的第一列与myfile2中的第一列匹配,那么它应该打印myfile2的两列。

下面的awk一行程序可以工作,但我正在寻找Python中类似的一行程序。

awk 'NR==FNR{c[$1]++;next};c[$1]' myfile1 myfile2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-13 00:24:25

如果你愿意,你可以使用第三方库,比如Pandas。这可能是你最接近的一行代码了。

delim_whitespace=True确保Pandas使用空格来分隔您的列,而不是您期望从常规csv中使用的,

import pandas as pd

df1 = pd.read_csv('file1.txt', header=None, names=['sport'])
df2 = pd.read_csv('file2.txt', header=None, names=['sport', 'name'],
                  delim_whitespace=True)

res = df2[df2['sport'].isin(df1['sport'].unique())]

print(res)
票数 1
EN

Stack Overflow用户

发布于 2018-07-13 04:35:41

作为一种选择,您可以对列表和字典执行相同的操作。考虑到this thread,您可以在comprehensions中打开文件,这些文件将在执行后关闭。尽管完成这类任务的最佳方法是使用"with“作为上下文管理器。

f1 = [x.strip("\n") for x in open("myfile1.txt")].sort()
f2 = {x[0]: x[1] for x in [l.split() for l in open("myfile2.txt")]}
if f1 == list(f2.keys()).sort():
    [print(k, v) for k, v in f2.items()]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51310311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档