一个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分奉上。
展开
 我来答
波尽天下
2014-10-23 · TA获得超过834个赞
知道小有建树答主
回答量:202
采纳率:66%
帮助的人:227万
展开全部

这题其实不难,解决的方案也有很多。介绍你一种比较投机的方法:

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!")


希望对你有所帮助~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lovesoo
2014-10-23 · TA获得超过2385个赞
知道小有建树答主
回答量:654
采纳率:66%
帮助的人:412万
展开全部
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')

实测通过!
追问
哥啊,真的不行唉,我跑了下,最后输出的结果跟b.txt一样,不是生成的c.txt
追答
加QQ 766659775说
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NE_Z
2014-10-23 · TA获得超过1737个赞
知道小有建树答主
回答量:1687
采纳率:55%
帮助的人:587万
展开全部
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')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
栩箭
2014-10-23 · TA获得超过5310个赞
知道大有可为答主
回答量:3036
采纳率:0%
帮助的人:1659万
展开全部
#!/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'))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ca79eb9
2014-10-23 · TA获得超过5027个赞
知道大有可为答主
回答量:1342
采纳率:100%
帮助的人:746万
展开全部
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()))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式