我虽然已经适当地设置了表达式,但是拆分未按预期工作。
c = re.compile(r'(?<=^\d\.\d{1,2})\s+');
for header in ['1.1 Introduction', '1.42 Appendix']:
print re.split(c, header)
预期结果:
['1.1', 'Introduction']
['1.42', 'Appendix']
我得到以下堆栈跟踪:
追溯(最近一次通话):
在第1行的文件“ foo.py”中
c = re.compile(r'(? 编译中的文件“ C:\ Python27 \ lib \ re.py”,行190
返回_compile(模式,标志)
_compile中的文件“ C:\ Python27 \ lib \ re.py”,第242行
引发错误,v#表达式无效
sre_constants.error:向后看需要固定宽度的模式
<<
最佳答案
python中的lookbehinds不能为可变宽度,因此您的lookbehind无效。
您可以使用捕获组作为解决方法:
c = re.compile(r'(^\d\.\d{1,2})\s+');
for header in ['1.1 Introduction', '1.42 Appendix']:
print re.split(c, header)[1:] # Remove the first element because it's empty
输出:
['1.1', 'Introduction']
['1.42', 'Appendix']
关于python - Python正向后拆分可变宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22748123/