Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式在第行上按数字拆分_Python_Regex - Fatal编程技术网

Python正则表达式在第行上按数字拆分

Python正则表达式在第行上按数字拆分,python,regex,Python,Regex,我想用一行中独立的数字分割这段文字 1 root -0.307087 17.6356 -28.2214 2.36076 1.44212 -4.54601 lowerback 15.4094 -0.182495 1.65268 upperback 1.54579 0.0318172 -0.110122 thorax -6.9977 -0.0335751 -1.06068 lowerneck -3.24163 -0.676991 -1.34632 upperneck -9.28199 -0.8183

我想用一行中独立的数字分割这段文字

1
root -0.307087 17.6356 -28.2214 2.36076 1.44212 -4.54601
lowerback 15.4094 -0.182495 1.65268
upperback 1.54579 0.0318172 -0.110122
thorax -6.9977 -0.0335751 -1.06068
lowerneck -3.24163 -0.676991 -1.34632
upperneck -9.28199 -0.818331 1.08102
head -2.3551 -0.388697 0.578143
rclavicle 1.74931e-014 -4.77083e-015
rhumerus -42.2757 19.3184 -90.6312
rradius 79.2191
rwrist 2.46902
rhand -35.8906 32.487
rfingers 7.12502
rthumb -9.00425 2.69918
lclavicle 1.74931e-014 -4.77083e-015
lhumerus -46.581 -10.5126 91.072
lradius 108.082
lwrist 30.7395
lhand -39.5085 13.512
lfingers 7.12502
lthumb -12.4939 43.1185
rfemur 4.30283 -1.72433 25.7796
rtibia 82.7602
rfoot 27.83 -8.73877
rtoes 20.2614
lfemur -27.49 -2.09007 -20.1015
ltibia 38.398
lfoot -7.19848 -5.78026
ltoes 5.97973
2
root -0.303728 17.5624 -27.7253 2.02549 1.77071 -4.33872
lowerback 16.0608 -0.380636 1.35189
upperback 1.68665 -0.267024 -0.0539964
thorax -7.21419 -0.169571 -0.765959
lowerneck -2.88855 -0.493739 -1.55908
upperneck -9.88628 -0.567977 1.15901
head -2.623 -0.258251 0.642519
rclavicle -7.65321e-015 -2.38542e-015
rhumerus -42.619 18.2084 -90.2387
rradius 76.8375
rwrist 5.33346
rhand -37.643 32.4997
rfingers 7.12502
rthumb -10.695 2.7919
lclavicle -7.65321e-015 -2.38542e-015
lhumerus -43.8177 -11.0502 91.3641
lradius 108.431
lwrist 30.2025
lhand -38.9758 12.3082
lfingers 7.12502
lthumb -11.9803 41.9454
rfemur 1.76685 -3.0026 24.5235
rtibia 87.0878
rfoot 27.0955 -9.32294
rtoes 22.2194
lfemur -26.5572 -2.78834 -20.4876
ltibia 40.7855
lfoot -10.1476 -3.85256
ltoes 0.48001
3
root -0.294208 17.4728 -27.2384 1.62853 1.94279 -4.06517
lowerback 16.9292 -0.51999 1.14183
upperback 1.81465 -0.483798 -0.143209
thorax -7.55951 -0.270454 -0.690263
lowerneck -2.59928 -0.313935 -1.56078
upperneck -10.5834 -0.320817 1.24057
head -2.91503 -0.136576 0.671345
rclavicle -1.54058e-014 -3.97569e-015
rhumerus -42.9367 16.607 -89.7942
rradius 74.9122
rwrist 7.29535
rhand -38.4744 33.0964
rfingers 7.12502
rthumb -11.4968 3.43167
lclavicle -1.54058e-014 -3.97569e-015
lhumerus -40.8446 -11.9999 91.445
lradius 108.671
lwrist 29.7854
lhand -38.5919 11.658
lfingers 7.12502
lthumb -11.6101 41.3163
rfemur -0.94671 -4.033 23.2605
rtibia 91.2781
rfoot 26.5333 -9.15277
rtoes 23.1538
lfemur -25.0499 -3.27418 -20.9658
ltibia 42.1017
lfoot -12.067 -2.99804
ltoes -2.17676
理想情况下,我希望得到的内容之间的独立数字不包括数字。 我试过这个规则:

r"[0-9]+(?<=)[\r\n]"

r“[0-9]+(?您的正则表达式尝试无法工作,原因有多种,例如,它会消耗十进制数的位数,因为它不是以换行符开头的。此外,前瞻没有意义(看起来是空的),您也不需要它

我会使用“number”正则表达式进行拆分,包含在两个换行符之间(换行符之前有可选的回车字符,以防万一)

测试:

请注意,这种过于简单的方法不能处理文本以一行中的一个数字开头或结尾的情况。我们必须通过添加
^ |
$
案例来稍微复杂化它,但在这种情况下,我们会忽略单行提要和空字段。因此,我们可以应用正确的列表理解来过滤掉“空白”字段(也许可以使用纯正则表达式来完成):

结果:

['rfoot 27.0955 -9.32294\nlfoot -10.1476 -3.85256\nltoes 0.48001', 'root -0.294208 17.4728 -27.2384 1.62853 1.94279 -4.06517\nrwrist 7.29535', 'rhand -38.4744 33.0964\nlradius 108.671\nlwrist 29.7854']

预期的输出是什么?那么,您想要
1
2
之间的所有行,等等?是的。1和2之间的所有行,2和3之间的所有行,等等。它不处理数字在开头或结尾的情况。我会编辑。
text = """1
rfoot 27.0955 -9.32294
lfoot -10.1476 -3.85256
ltoes 0.48001
3
root -0.294208 17.4728 -27.2384 1.62853 1.94279 -4.06517
rwrist 7.29535
5
rhand -38.4744 33.0964
lradius 108.671
lwrist 29.7854
4"""


print([x for x in re.split(r"(^|\r?\n)\d+(\r?\n|$)",text) if x.strip()])
['rfoot 27.0955 -9.32294\nlfoot -10.1476 -3.85256\nltoes 0.48001', 'root -0.294208 17.4728 -27.2384 1.62853 1.94279 -4.06517\nrwrist 7.29535', 'rhand -38.4744 33.0964\nlradius 108.671\nlwrist 29.7854']