python 两个文本某字段比较,如果相同,返回其中一个文本相同的值

test.txt有数据如下record_id=17|contact_info=9075726807987#|extension_number=|phone_type=固定... test.txt 有数据如下
record_id=17|contact_info=9075726807987#|extension_number=|phone_type=固定电话
record_id=15|contact_info=915918107808#|extension_number=|phone_type=移动电话
record_id=24|contact_info=9018038789388#|extension_number=|phone_type=固定电话
test2.txt 有数据
9075726807987
现要将test.txt contact_info=后面的电话号码在test.txt 有的数据提取出来,并保存新的文件test3.txt中
即提取record_id=17|contact_info=9075726807987#|extension_number=|phone_type=固定电话到test3.txt中
我的代码,但是跑的时候总是提示group(1)没有定义,请大侠帮忙。谢谢!
def include_a(a,b,c):
import re
in_put=open(a)
out_put=open(b,'w')
include=open(c)
line=in_put.readlines()
include_line=include.readlines()
include_list=[]
for i in include_line:
include_list.append(result)
for i in line:
print(i)
contract_no=re.search(r'contract_no=(\d+)',i)
if contract_no.group(1) in include_list:
out_put.write(i)
in_put.close()
include.close()
out_put.close()
展开
 我来答
xuniuer2014
2015-06-26 · TA获得超过170个赞
知道小有建树答主
回答量:131
采纳率:62%
帮助的人:77.3万
展开全部
A typo! 在你的规则中,应该是 `contract_info=`, 而不是`contract_no=`
追问
不好意思,我本来是要取contract_no,但是字段很长,我只复制前一部分,其实道理一样啦,但是改了还是错误的。
追答

其实没有必要使用re来处理,直接用字符串就可以完成。如下参考一下:

for i in line:
    field2nd = i.split('|')[1].split('=')[1]
    if len(field2nd) and not field2nd.startswith('#'):
        # the line is what you want
        # now you can process further
        print i
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式