Regex 每行提取文本并签入正则表达式
您好,我有以下两个文件,其中许多是以列表的形式提供的 文件1: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)都是相同的一部分。在文本中,我需要提取联系人后的第一行,即姓名。然
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 ]+)
让我知道这是否适合您,否则请提供更多的示例输入,以便我可以进一步细化我的正则表达式以匹配您的精确输入。老实说,我可能更喜欢逐行迭代文件并实现一些简单的解析逻辑。