Regex 每行提取文本并签入正则表达式

Regex 每行提取文本并签入正则表达式,regex,python-3.x,Regex,Python 3.x,您好,我有以下两个文件,其中许多是以列表的形式提供的 文件1: contact TomGonsalves 985664774 6560,m.d avenue. harrydsouza 7676764 543,gt,road. 同一python列表中的文档2: contact richard peterson 4563565 87,td street,Ny. 这里,上述两个文本文档(1和2)都是相同的一部分。在文本中,我需要提取联系人后的第一行,即姓名。然

您好,我有以下两个文件,其中许多是以列表的形式提供的

文件1:

 contact
 TomGonsalves
 985664774
 6560,m.d avenue.

  harrydsouza
  7676764
  543,gt,road.
同一python列表中的文档2:

  contact
  richard peterson
  4563565
  87,td street,Ny.
这里,上述两个文本文档(1和2)都是相同的一部分。在文本中,我需要提取联系人后的第一行,即姓名。然而,在文档1中,我需要提取两个名称,仅提取名称

我需要编写一个正则表达式来获取所需的内容,输出应该如下所示

     Names from Document 1 =[tomgonsalves,harrydsouza]
     names from document-2=[richard peterson]

有人能帮我用Python3中的正则表达式脚本吗?同一个列表中有许多文档,它们的联系人中可能有不同数量的名称。我只需要单独提取名称(可以是1个或多个)

您可以尝试以下方法:

逐行读取
txt
文件。对于每一行,检查它是否只有带有
isalpha()
字符串函数的字母

In [309]: with open('ff.txt') as f: ## ff.txt is the file you shared
     ...:     for i in f:
     ...:         i = re.sub('\n','',i)
     ...:         if i.isalpha():
     ...:             if not i == 'contact':
     ...:                 print(i)

TomGonsalves
harrydsouza

您可以对您拥有的每个文件执行此操作。

尽管最好通过简单的文本解析来攻击此操作,但如果您需要正则表达式解决方案,您可以使用此正则表达式

(?:^\s*[a-zA-Z]+\s*|(\n\s*){2})([\w ]+)


让我知道这是否适合您,否则请提供更多的示例输入,以便我可以进一步细化我的正则表达式以匹配您的精确输入。

老实说,我可能更喜欢逐行迭代文件并实现一些简单的解析逻辑。