在给定模式

时间:2018-04-27 02:38:33

标签: regex python-3.x

我的数据集的一部分如下:

                   UNIVERSITY, S.E.(2015 COURSE) EXAMINATION,OCT 2017 COLLEGE    : ******     BRANCH CODE: +++-S.E.(2015 **.)(COMPUTER)    DATE       : 04 FEB 2018              

.................................................................................................... 
210247    -------  -------  -------  018/025  024/050  -------  56   02   B+   07    14   210248    -------  -------  -------  018/025  027/050  -------  60   01   A    08    08   210249    -------  -------  -------  019/025  -------  -------  76   01   A+   09    09   210250    -------  -------  -------       PP  -------  -------  PP   00   P    00    00  SEM.:2    207003    037/050  029/050  066/100  -------  -------  -------  66   04   A    08    32   207003    -------  -------  -------  019/025  -------  -------  76   01   A+   09    09   210251 *  028/050  022/050  050/100  -------  -------  -------  50   04   B    06    24   210252    031/050  022/050  053/100  -------  -------  -------  53   04   B    06    24   210255    -------  -------  -------  018/025  022/050  -------  53   01   B    06    06   210256    -------  -------  -------  018/025  025/050  -------  57   02   B+   07    14   210257    -------  -------  -------  018/025  031/050  -------  65   02   A    08    16   210258    -------  -------  -------       PP  -------  -------  PP   00   P    00    00  
.................................................................................................... 
24   210243    025/050  030/050  055/100  -------  -------  -------  55   04   B+   07    28   210244    034/050  022/050  056/100  -------  -------  -------  56   04   B+   07    28   210245    027/050  026/050  053/100  -------  -------  -------  53   04   B    06    24   210246    -------  -------  -------  021/025  033/050  -------  72   01   A+   09    09   210247    -------  -------  -------  021/025  022/050  -------  57   02   B+   07    14   210248    -------  -------  -------  020/025  028/050  -------  64   01   A    08    08   210249    -------  -------  -------  020/025  -------  -------  80   01   O    10    10   210250    -------  -------  -------       PP  -------  -------  PP   00   P    00    00  SEM.:2    207003 *  028/050  014/050  042/100  -------  -------  -------  FF   04   F    00    00   207003    -------  -------  -------  020/025  -------  -------  80   01   O    10    10   210251    027/050  022/050  049/100  -------  -------  -------  49   04   C    05    20   210252    023/050  030/050  053/100  -------  -------  -------  53   04   B    06    24   ....................................................................................................

他们是两个学期的学生分数,由一系列(.....)分开。

我想提取仅在(................)点之间的数据

我用过

re.search(r'[A-Z](\d)+(\w).*(: \d+)(\.)(\d{2})[,](\w* )(\D*)(\d+)', studentdata).group(0)

但只获得部分数据。

我做错了什么? 任何帮助表示赞赏。

由于

1 个答案:

答案 0 :(得分:1)

要获取(................)点之间的数据,您可以使用以下代码:

import re

regex = r'\.\.\s+(.*?)\.\.'

test_str = ("UNIVERSITY, S.E.(2015 COURSE) EXAMINATION,OCT 2017 COLLEGE : ****** BRANCH CODE: +++-S.E.(2015 **.)(COMPUTER) DATE : 04 FEB 2018\n\n"
    ".................................................................................................... 210247 ------- ------- ------- 018/025 024/050 ------- 56 02 B+ 07 14 210248 ------- ------- ------- 018/025 027/050 ------- 60 01 A 08 08 210249 ------- ------- ------- 019/025 ------- ------- 76 01 A+ 09 09 210250 ------- ------- ------- PP ------- ------- PP 00 P 00 00 SEM.:2 207003 037/050 029/050 066/100 ------- ------- ------- 66 04 A 08 32 207003 ------- ------- ------- 019/025 ------- ------- 76 01 A+ 09 09 210251 * 028/050 022/050 050/100 ------- ------- ------- 50 04 B 06 24 210252 031/050 022/050 053/100 ------- ------- ------- 53 04 B 06 24 210255 ------- ------- ------- 018/025 022/050 ------- 53 01 B 06 06 210256 ------- ------- ------- 018/025 025/050 ------- 57 02 B+ 07 14 210257 ------- ------- ------- 018/025 031/050 ------- 65 02 A 08 16 210258 ------- ------- ------- PP ------- ------- PP 00 P 00 00\n"
    ".................................................................................................... 24 210243 025/050 030/050 055/100 ------- ------- ------- 55 04 B+ 07 28 210244 034/050 022/050 056/100 ------- ------- ------- 56 04 B+ 07 28 210245 027/050 026/050 053/100 ------- ------- ------- 53 04 B 06 24 210246 ------- ------- ------- 021/025 033/050 ------- 72 01 A+ 09 09 210247 ------- ------- ------- 021/025 022/050 ------- 57 02 B+ 07 14 210248 ------- ------- ------- 020/025 028/050 ------- 64 01 A 08 08 210249 ------- ------- ------- 020/025 ------- ------- 80 01 O 10 10 210250 ------- ------- ------- PP ------- ------- PP 00 P 00 00 SEM.:2 207003 * 028/050 014/050 042/100 ------- ------- ------- FF 04 F 00 00 207003 ------- ------- ------- 020/025 ------- ------- 80 01 O 10 10 210251 027/050 022/050 049/100 ------- ------- ------- 49 04 C 05 20 210252 023/050 030/050 053/100 ------- ------- ------- 53 04 B 06 24 ")

matches = re.findall(regex, test_str, re.DOTALL)

print(matches)

您可以在线查看结果,并在Regex101 here上使用它。