Python 3:匹配文本文件中的名称并逐行打印出来

时间:2016-11-28 16:37:03

标签: regex python-3.x

我的目标是从我的reular表达式匹配的文本文件中逐行打印匹配项。我的文件regexprc.txt中写有各种东西,但是我想编写一个简单的程序,它只匹配该文件中的名称并逐行打印它们。

规则是:具有可选中间名的名字和姓氏的行都用一个空格分隔,任何第一个字母必须大写,并且任何字母字符串都可以作为名称使用。所以它应该匹配John Smith,John Lee Smith,A B,A B C,Abc Def Z.它不应该与John Smith,Z,Ab Cd EE,A B C D相匹配。

不幸的是,我需要一些帮助,因为我是Python 3的新手。这是我到目前为止所尝试的内容:

import re

file_read = open("regexprc.txt", "r")
#match names
ptr = '^([A-Z][a-z]*\s){1,2}([A-Z][a-z]*)?$'

for line in file_read:
    a = re.search(ptr, line)
    print(a)

此代码仅打印许多None语句以及一些看起来像的消息:

 <_sre.SRE_Match object; span=(0, 4), match='A B\n'>. 

我再次希望它能逐行打印出regexprc.txt中的名字。

1 个答案:

答案 0 :(得分:1)

relative

这将找到每一行中的所有匹配项,并打印出&#34; group 0&#34; (即所有匹配的文本)。(/ p>)

with语句还会为您关闭文件,因此一般情况下使用它是一种很好的做法。