我有两个这样的txt文件
file1.txt file2.txt
a a propertya
b z propertyz
c c propertyc
d m propertym
e f propertyf
f w propertyw
g e propertye
etc b propertyb
d propertyd
x propertyx
g propertyg
etc
(file1的所有元素都在file2中,但不是另一种方式,file2包含所有模块,file1只是一组模块)我需要比较这些文件并获得另一个带有共同元素的txt文件相应的财产,我的意思是
file.txt的
a propertya
b propertyb
c propertyc
d propertyd
e propertye
f propertyf
g propertyg
我不知道该怎么做(我是python的新手),我只是可以做一些简单的事情,比如获取共同的对象列表,但我不知道如何编写各自的属性。
答案 0 :(得分:0)
elements = []
with open('file1.txt') as f:
for line in f:
elements.append(line[:line.find('\n')])
newFile = open('file.txt','a')
with open('file2.txt') as f:
for line in f:
if elements.__contains__(line[0:1]):
newFile.write(line)
newFile.close()
答案 1 :(得分:0)
阅读这两个文件;
with open('file1.txt') as f:
f1 = f.readlines()
f1 = [k.strip() for k in f1] # Remove unneeded whitespace
letters = ''.join(f1) # make it into a string of letters
with open('file2.txt') as f:
f2 = f.readlines()
f2 = [k.strip() for k in f2] # Remove unneeded whitespace
对于f2中的每一行,检查它是否以第一个文件中的字母开头
lines = [ln for ln in f2 if ln[0] in letters]
将结果写入文件;
with open('file.txt', 'w') as out:
out.write('\n'.join(lines))
答案 2 :(得分:0)
如果格式与您的示例相同,则fil1.txt似乎具有在file2.txt中定义的字典的键。您可以使用以下脚本将file2.txt加载到dict中:
sep = " "
d = {}
with open("file2.txt", "r") as fd:
for line in fd:
# strip() to get rid of unnecesary spaces/endline/etc
key, val = line.strip().split(sep)
d[key] = val
现在您可以阅读file1.txt并从那里获取密钥,使用以下代码:
with open("file1.txt", "r") as fd:
keys = fd.readlines()
keys = [k.strip() for k in keys]
for k in keys:
print "%s %s" % (k, dict[k])
一些意见:
编辑:修正了一些拼写错误。