如何在python中使用正则表达式形成单独的块?

如何在python中使用正则表达式形成单独的块?,python,regex,resume,Python,Regex,Resume,这是我的代码: results = re.finditer(r'([A-Z ?]+)\n+(.*)\n',inputfile,flags=re.MULTILINE) for match in results: print match.groups() i/p: 基本信息 姓名:约翰 电话号码:+91-9876543210 出生日期:21-10-1995 技能集 爪哇 蟒蛇 o/p: (“基本信息”,“姓名:John”) (‘技能集’、‘Java’) 但要求的o/p: (‘基本信息’

这是我的代码:

results = re.finditer(r'([A-Z ?]+)\n+(.*)\n',inputfile,flags=re.MULTILINE)

for match in results:

    print match.groups()
i/p:

基本信息

姓名:约翰

电话号码:+91-9876543210

出生日期:21-10-1995

技能集

爪哇

蟒蛇

o/p: (“基本信息”,“姓名:John”) (‘技能集’、‘Java’)

但要求的o/p: (‘基本信息’、‘姓名:约翰’、‘电话号码:+91-9876543210’、‘DOB’:‘21-10-1995’)
('SKILL SET'、'Java'、'Python')

re.MULTILINE
替换为
re.DOTALL
,以便您的
*
跨多行匹配(是的,标记名称有点误导)。您还需要在
\n
上拆分生成的字符串

一般来说,在这个任务中使用regexp可能不是最好的主意,这应该更好:

import string
results = []
for line in inputfile.splitlines():
  if all(c in (string.ascii_uppercase + ' ') for c in line):
    results.append([ line ])
  elif line != '':
    results[-1].append(line)

re.MULTILINE
替换为
re.DOTALL
,以便您的
*
跨多行匹配(是的,标志名称有点误导)。您还需要在
\n
上拆分生成的字符串

一般来说,在这个任务中使用regexp可能不是最好的主意,这应该更好:

import string
results = []
for line in inputfile.splitlines():
  if all(c in (string.ascii_uppercase + ' ') for c in line):
    results.append([ line ])
  elif line != '':
    results[-1].append(line)

使用正则表达式很难获得所有输出,因为文件文本并不简单

但是正则表达式+很少的额外努力,您可以轻松实现这一点

# This regex fetch all Titles (i.e. BASIC INFO, SKILL SET...)
results = re.findall(r"([A-Z ]{4,})", inputfile) 
经过一点点的努力,你会得到你想要的结果


输出
[“基本信息”,“姓名:John”,“电话号码:+91-9876543210”,“DOB:'21-10-1995'”,
[“技能集”,“Java”,“Python”]
]


使用正则表达式很难获得所有输出,因为文件文本并不简单

但是正则表达式+很少的额外努力,您可以轻松实现这一点

# This regex fetch all Titles (i.e. BASIC INFO, SKILL SET...)
results = re.findall(r"([A-Z ]{4,})", inputfile) 
经过一点点的努力,你会得到你想要的结果


输出
[“基本信息”,“姓名:John”,“电话号码:+91-9876543210”,“DOB:'21-10-1995'”,
[“技能集”,“Java”,“Python”]
]


在这里,您如何区分技能集和基本信息?为什么这里需要正则表达式?我使用了([A-Z?]+)\n来识别基本信息和技能集。我想使用正则表达式创建两个单独的块,其中包含这两个标题下的信息@Sarathsadasivanpillai您如何区分技能和基本信息?为什么这里需要正则表达式?我使用了([A-Z?]+)\n来识别基本信息和技能集。我想使用正则表达式创建两个单独的块,其中包含这两个标题下的信息@SarathSadasivanpillai我如何将其拆分\n?python新手。还在想。哦,等等,我是在假设所有不是“节头”的行都包含小写字母的情况下工作的。这对DOB:21-10-1995不适用。它不起作用。多次显示“无”。不过还是要谢谢你!更详细的信息(即与您的期望不同的内容)将依次列出。我已使用([A-Z?]+)\n来确定基本信息和技能集。我想使用正则表达式创建两个单独的块,其中包含这两个标题下的信息。使用上述代码并不能做到这一点。它只打印了多次“无”。如何将其拆分\n?python新手。还在想。哦,等等,我是在假设所有不是“节头”的行都包含小写字母的情况下工作的。这对DOB:21-10-1995不适用。它不起作用。多次显示“无”。不过还是要谢谢你!更详细的信息(即与您的期望不同的内容)将依次列出。我已使用([A-Z?]+)\n来确定基本信息和技能集。我想使用正则表达式创建两个单独的块,其中包含这两个标题下的信息。使用上述代码并不能做到这一点。它只是多次打印“无”。嘿,我希望答案分为两组。包含姓名、DOB和电话号码的基本信息,以及包含Java和Python的技能集。技能集和基本信息是文件中的静态字符串?否。它可以是任何内容。这只是一个示例数据集。好的,然后你需要一些额外的工作,然后正则表达式才能得到结果,因为你的文件并不简单!!编辑好的答案,看看吧!非常感谢你!就像我希望的那样:)嘿,我希望答案分为两组。包含姓名、DOB和电话号码的基本信息,以及包含Java和Python的技能集。技能集和基本信息是文件中的静态字符串?否。它可以是任何内容。这只是一个示例数据集。好的,然后你需要一些额外的工作,然后正则表达式才能得到结果,因为你的文件并不简单!!编辑好的答案,看看吧!非常感谢你!就像我希望的那样:)