yan_gx 2019-05-21 11:46 采纳率: 100%
浏览 378
已采纳

python,如何在零宽断言中的表达式exp使用变量来搜索匹配?

我尝试用python编写个程序,主要目的是在test.txt中提取多个特定字段后的浮点数值。尝试用了零宽断言来提取特定字段后的数值,因为特定字段是多个的,便用了for循环,当在零宽断言中的表达式exp用变量时会报错“SyntaxError: invalid syntax”。上网查下零宽断言的用法,表达式exp好像是要用定长字符,我该如何实行我的目的。

encoding='utf-8'
encoding='gb18030'
import re
dingzhi=[ '失灵低电流', '重合闸控制字', '失灵零序电流', '突变量启动定值', '负序电流', '零序电流启动定值', '低功率因数', '不一致零序电流', '低功率因数过流', '不一致负序电流', '延时联跳延时', '三相不一致延时', '失灵保护延时', '充电段电流', '死区电流', '死区保护延时', '充电零序过流', '检同期角度', '充电段延时', '单重延时', '三重延时', '充电零序延时', '后合时间差', '失灵高电流', '后合跳闸延时']

def trans_dict(file):
    files = open(file,encoding='utf-8')
    files_content = files.readlines() #读取数据,返回一个list,每一行 为一个字符串
    result_list = [] #创建一个空列表

    for data_lines in files_content:  #遍历列表,取出每一行字符串

        # try:
        data_lines=str(data_lines.strip('\n').replace(' ','').replace('│','')) #处理数据删掉换行、空格和表格符号
        for dingzhi_a in dingzhi:
            p = re.compile('(?<='dingzhi_a')\s*\d*\.\d*')
            a=list(map(float,p.findall(data_lines)))
            print(a)

        # except :
        #   pass
        # else:
            # if a!=[]:
            #   print(a)

    files.close()

trans_dict('test.txt')

test.txt是这样的

  • 写回答

2条回答 默认 最新

  • yan_gx 2019-05-22 11:48
    关注

    搞明白了,其实就是字符串传参的事,我重构下程序,没问题了

    def ky(iuy,f2):
        q1='(?<='
        q2=')\s*\d*\.\d*'
        q=q1+iuy+q2
        p = re.compile(q)
        a=list(map(float,p.findall(f2)))
        if a!=[]:
            print(iuy,a)
    
    
    def trans_dict(file):
        files = open(file,encoding='utf-8')
        files_content = files.readlines() #读取数据,返回一个list,每一行 为一个字符串
        result_list = [] #创建一个空列表
    
        for data_lines in files_content:  #遍历列表,取出每一行字符串
            result_dict = {} # 创建一个空字典
    
            # try:
            data_lines=str(data_lines.strip('\n').replace(' ','').replace('│',''))
            for dingzhi_a in dingzhi:
                ky(dingzhi_a,data_lines)
    
        files.close()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大