嗨,我有以下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个还是多个)
答案 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 ]+)
让我知道这是否适合您,否则请提供更多示例输入,以便我进一步优化我的正则表达式以匹配您的精确输入。