一个python文本处理问题(难)
有一个文本a.txt存放有:china234japan456English123同时有一个文本b.txt存放有:chinachinajapanamericaenglish...
有一个文本a.txt存放有:
china 2 3 4
japan 4 5 6
English 1 2 3
同时有一个文本b.txt存放有:
china
china
japan
america
english
english
china
现要生成一个c.txt存放b.txt在a.txt中匹配到的值,没有则设为0,如下所示,c.txt格式为:
china 2 3 4
china 2 3 4
japan 4 5 6
america 0
english 1 2 3
english 1 2 3
china 2 3 4
请大神解答,50分奉上。 展开
china 2 3 4
japan 4 5 6
English 1 2 3
同时有一个文本b.txt存放有:
china
china
japan
america
english
english
china
现要生成一个c.txt存放b.txt在a.txt中匹配到的值,没有则设为0,如下所示,c.txt格式为:
china 2 3 4
china 2 3 4
japan 4 5 6
america 0
english 1 2 3
english 1 2 3
china 2 3 4
请大神解答,50分奉上。 展开
展开全部
这题其实不难,解决的方案也有很多。介绍你一种比较投机的方法:
b = open("b.txt").read()
lines = open("a.txt").readlines()
for line in lines:
line = line.strip()
country = line.split()[0]
b = b.replace(country, line)
c = ""
for line in b.split("\n"):
if len(line.split(" ")) > 1:
c += line + "\n"
else:
c += line + " 0\n"
open("c.txt", "w").write(c)
print("OK!")
希望对你有所帮助~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
with open('a.txt','r') as f1:
res={}
for i in f1:
i=i.strip()
res[i.split(' ')[0]]=i
with open('b.txt','r') as f2:
with open('c.txt','w') as f3:
for j in f2:
j=j.strip()
if res.has_key(j):
f3.write(res[j]+'\n')
else:
f3.write(j+' 0\n')
实测通过!
res={}
for i in f1:
i=i.strip()
res[i.split(' ')[0]]=i
with open('b.txt','r') as f2:
with open('c.txt','w') as f3:
for j in f2:
j=j.strip()
if res.has_key(j):
f3.write(res[j]+'\n')
else:
f3.write(j+' 0\n')
实测通过!
追问
哥啊,真的不行唉,我跑了下,最后输出的结果跟b.txt一样,不是生成的c.txt
追答
加QQ 766659775说
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
alist=[]
with open('a.txt') as filea:
for i in filea:
alist.append(i.strip().lower())
clist=[]
with open('b.txt') as fileb:
for i in fileb:
found=False
for j in alist:
if i.strip().lower() in j:
clist.append(j)
found=True
break
if not found:
clist.append(i.strip()+' 0')
with open('c.txt','w') as filec:
for i in clist:
filec.write(i+'\n')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import defaultdict
d = defaultdict(lambda: '0\n', [e.lower().split(' ', 1) for e in open('a.txt')])
f = open('c.txt', 'w')
map(lambda x: f.write(x.strip() + ' ' + d[x.strip()]), open('b.txt'))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
def match_keyword(word):
file_a = open('a.txt', 'r')
for line in file_a:
if line.startswith(word):
return line
return '0\n'
file_b = open('b.txt', 'r')
file_c = open('c.txt', 'w')
for l in file_b:
file_c.write(match_keyword(l.strip()))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询