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() 展开
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() 展开
1个回答
展开全部
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询