我有两个文本文件:
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
发布于 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)
发布于 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()]
https://stackoverflow.com/questions/51310311
复制相似问题