采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
import rea = 'PythonPythonPythonPython'r = re.findall('(Python){2}', a)print(r)
此时能打印出两个Python,但是把2修改为3或者4是只打印一个Python,这是为什么呢?
我用的是Pycharm Python3
{2}代表 找两个PYthon,你有4个,当然会匹配两个。改成3,就是3个一组,你只有4个,所以只匹配一个。
非常感谢!
如果有组存在(即括号括起来的字符),那么findall返回的是组的结果。
(Python){2}相当于(Python)Python,(Python){3}相当于(Python)PythonPython,所以(Python){2}返回两个Python,而(Python){3}返回一个Python。
你可以试试看((Python){3}),这里用了两个括号,代表有两个组,括号从外往里看,从左往右看,外面那个是第一组,里面那个是第二组。所以((Python){3})会返回[ ('PythonPythonPython', 'Python') ]
前面的看懂了,你说的后半段没太懂: 》》你可以试试看((Python){3}),这里用了两个括号,代表有两个组,括号从外往里看,从左往右看,外面那个是第一组,里面那个是第二组。所以((Python){3})会返回[ ('PythonPythonPython', 'Python') ]
findall,如果只有只有一组或者没有组,返回的是字符串的列表。如果两组及以上,那么会返回包含各组的元组的列表,[(第一组,第二组,第三组...),(第一组,第二组,第三组...),...]。 从外往里看,从左往右看的例子: ( (第二组), (第三组) ) 最外层的括号是第一组,紧接着是括号里面的左边第二组,右边第三组。 r = re.findall('((第一组)(第二组))', '第一组第二组') 那么r就是 [('第二组第三组','第二组','第三组')] 这么说懂了吧?
好的,多谢
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.5k 7
2.5k 3
2.1k 4
4.1k 22
2.3k 19