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

时间:2018-11-19 15:48:39

标签: regex python-3.x

嗨,我有以下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)都属于同一文本。在文本中,我需要在联系后提取第一行,即姓名。但是在Document-1中,我需要提取2个名称,而仅是名称。

我需要写一个正则表达式来获取需要的东西,输出看起来应该像

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

有人可以帮助我使用python 3中的reGex脚本吗。在同一列表中有很多文档,其联系人姓名可能不同。我只需要提取名称即可(无论是1个还是多个)

2 个答案:

答案 0 :(得分: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

您可以为每个文件执行此操作。

答案 1 :(得分:0)

尽管最好通过简单的文本解析来解决这个问题,但是如果您想要一个正则表达式解决方案,则可以使用此正则表达式,

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

Here is a demo

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