在常用的正则表达式都是使用表达式进行写入,尤其在findall中,但是经常会遇到需要提取字符串时,需要引入不同的变量来提取字符串,这时候就需要在正则表达式中引入变量,参考代码如下:
#!/usr/bin/env python3
# -*- coding:utf8 -*-
# @TIME :2019/7/14 9:02
# @Author:zoombug
# @File :
import os
import re
import csv
source_file=r'C:\Users\Desktop\pytxt_sorting\1.txt' #要提取的原文件。
date_file=r'C:\Users\Desktop\data.txt' #提取的数据保存的文件。
csv_file=r'C:\Users\Desktop\test.csv' #参数存放的文件。
with open(csv_file,'r')as f:#读取cvs文件中的参数,参数保存在文件中
f_csv=csv.reader(f)
for row in f_csv:#每行进行读取,
rp=str(row[1])#参数保存在文件中第二行,所以使用row[1].
print(rp)
f=open(source_file) #读取原文件。
for line in f.readlines(): #按照行数读取原文件。
nono=re.findall(r''+rp+'',line)# ***通过引用r''+str(i)+''的形式引入正则的变量,按照参数文件定义的变量进行提取***
with open(date_file,'a') as f_f:
for dd in nono:
f_f.write(str(dd)+'\n')
f_f.close()
print('Done')
f.close()
如代码中,使用re.findall(r’’+rp+’’,line)# 通过引用 r’’+str(i)+’’ 的形式引入正则的变量,通过这样就可以使用正则表达是来获取产品的信息。