python实现括号分组

#/usr/bin/env python
#-*- coding:utf-8 -*-

#思路:要先从最右边找‘(’;与之对应的‘)’要满足索引大于‘(’且最左边一个的索引;找到一个从‘)’的索引列表中去掉一个

#以如下表达式为例
#1+3+((5*5+6)+5)-6/3-(4+5)
a=‘1+3+((5*5+6)+5)-6/3-(4+5)‘
la=[]
lb=[]
for i in range(len(a)):
    if a[i]==‘(‘:
        la.append(i)
    elif a[i]==‘)‘:
        lb.append(i)
if len(la)!=len(lb):
    print("Your expression are wrong with using symblic ‘(‘or ‘)‘")
else:
    print("la:",sorted(la))
    print("lb:",sorted(lb))
    print("la|lb",set(la)|set(lb))
    couple1=dict.fromkeys(la,None)
    print(sorted(couple1.items(),key=lambda d :d[0],reverse=False))
    for i in sorted(couple1.keys(),reverse=True):
        for j in sorted(lb):
            if j>i:
                couple1[i]=j
                lb.remove(j)
                break
    print("括号分隔后的索引片段:",sorted(couple1.items(),key=lambda d:d[0]))

时间: 2024-10-10 07:37:17

python实现括号分组的相关文章

python小括号( )与中括号 [ ]

在python中小括号()表示的是tuple元组数据类型,元组是一种不可变序列. >>> a = (1,2,3) >>> a (1, 2, 3) >>> a = (1,) #一个值的元组 >>> a (1,) >>> 55, (55,) #一个值的元组 >>> 55 55 #不加逗号就变成了单独的数字 >>> ( ) ( ) #空元组 在python中中括号[ ]表示的是list列

Python 正则表达式 利用括号分组

如果想把区号从匹配的电话号码中分离,可以添加括号在正则表达式中创建分组,再使用group()方法,从一个分组中获取匹配的文本 正则表达式字符串中,第一个括号是第一组,第二个括号是第二组.向group()方法传入参数1或2,可以获得匹配文本中的不同部分,传入0或者不传参数,将返回整个匹配的文本 >>> import re>>> m=re.search(r'(\d{3})-(\d{3}-\d{4})','My phone number is 012-239-4597')&g

python 爬虫括号的用法

首先是文档说明: >>> import re >>> help(re.findall) Help on function findall in module re: findall(pattern, string, flags=0) Return a list of all non-overlapping matches in the string. If one or more capturing groups are present in the pattern,

python正则表达式(8)--分组、后向引用、前(后)向断言

无名.有名分组 (1)正则表达式-无名分组 从正则表 达式的左边开始看,看到的第一个左括号"("表示表示第一个分组,第二个表示第二个分组, 依次类推. 需要注意的是,有一个隐含的全局分组(就是索引号为0的分组),就是整个正则 表达式匹配的结果 (2)正则表达式-有名分组 命名分组就是给具体有默认分组编号的组另外再起一个别名,方便以后的引用. 命令分组的语法格式如下: (?P<name>正则表达式) 语法格式中的字符P必须是大写的"P",name是一个合法

python 正则括号的使用及踩坑

直接先上结论: 若匹配规则里有1个括号------返回的是括号所匹配到的结果, 若匹配规则里有多个括号------返回多个括号分别匹配到的结果, 若匹配规则里没有括号------就返回整条语句所匹配到的结果. 实际上是由其并不是python特有的,这是 正则 所特有的 , 任何一门高级语言使用正则都满足这个特点: 有括号时只能匹配到括号中的内容, 没有括号[相当于在最外层增加了一个括号]全部匹配. 原文地址:https://www.cnblogs.com/liangmingshen/p/1032

Python中的分组函数(groupby、itertools)

from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby #itertool还包含有其他很多函数,比如将多个list联合起来.. d1={'name':'zhangsan','age':20,'country':'China'} d2={'name':'wangwu','age':19,'country':'USA'} d3={'name':'lisi',

【Python数据分析】分组统计groupby

目录 1.语法 2.基础分组 2.分组后可迭代对象操作 3.按照轴类型进行分组 4.通过字典或者Series进行分组 5.通过函数分组 6.分组后常用数值函数 7.多函数计算 分组统计groupby功能: 根据某些条件,将数据拆成组 对每个组独立应用函数 将结果合并到一个数据结构中 1.语法 Dataframe在行(axis=0)或列(axis=1)上进行分组,将一个函数应用到各个分组并产生一个新值,然后函数执行结果被合并到最终的结果对象中. df.groupby(by=None, axis=0

Python 列表元素分组,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....](列表生成式解决)

In [29]: a=[x for x in range(1,101)] In [30]: b=[a[x:x+3] for x in range(0,100,3)] In [31]: bOut[31]:[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24], [25, 26, 27], [28, 29, 30], [31, 32, 33], [34

Python - Django - ORM 分组查询补充

单表查询: models.py: from django.db import models class Employee(models.Model): name = models.CharField(max_length=16) age = models.IntegerField() salary = models.IntegerField() province = models.CharField(max_length=32) dept = models.CharField(max_lengt