Python提取子字符串但保留空格

2024-04-28 15:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我想从一行中提取一个子字符串,但保留子字符串中出现的空白。例如,在以下情况下:

34  -1  1   10  C2H4      + OH      = C2H3     + H2O                8.020E+13  0.00   5955.0
35  -0.301029996    0.301029996 2   C2H3      + O2      = CH2O     + HCO                4.000E+12  0.00   -250.0
36  -0.477121255    0.477121255 3   C2H3      + HCO     = C2H4     + CO                 6.034E+13  0.00      0.0
37  -1  1   10  C3H5       =  C2H2+CH3      2.397E+48 -9.90  8.208E+04
38  -1  1   10  C2H4(+M)   =  C2H2+H2(+M)   1.800E+13  0.00  7.600E+04
39  -1  1   10  C2H3+O2    = C2H2+HO2       2.120E-06  6.00  9.484E+03
40  -0.505149978    0.505149978 3.2 C2H3+H     =  C2H2+H2       2.000E+13  0.00  2.500E+03
41  -0.505149978    0.505149978 3.2 C2H2+H(+M) = C2H3(+M)       3.110E+11  0.58  2.589E+03
42  -1  1   10  C2H2+O2    =  HCCO+OH       2.000E+08  1.50  3.010E+04
43  -0.698970004    0.698970004 5   C2H2+O     =  HCCO+H        1.430E+07  2.00  1.900E+03
44  -1  1   10  C2H2+OH    =  CH2CO+H       2.190E-04  4.50 -1.000E+03
45  -0.477121255    0.477121255 3   CH2CO+H    =  CH3+CO        1.100E+13  0.00  3.400E+03

我想提取从第五个元素到第三个元素的子串,从第三个元素到第三个元素,产生化学反应,空白保持不变,如下所示:

C2H4      + OH      = C2H3     + H2O

我试过这样使用split,但是我丢失了空格:

chemical_reaction=' '.join(aline.split()[4:-3])

我得到:

C2H4 + OH = C2H3 + H2O

Tags: 字符串元素h2空白ohcoo2h2o
1条回答
网友
1楼 · 发布于 2024-04-28 15:48:50

您可以使用以下正则表达式:

^\s*(?:\S+\s+){4}(.+?)(?:\s+\S+){3}\s*$

抓取被中间路径(.+?)返回的组#1。在这组词的两边,我们分别匹配4个非空格词和3个非空格词。你知道吗

RegEx Demo

相关问题 更多 >