我有一个大文本输出,如下所示:
name =
place = San Francisco
number = A901
name = Andy
place = Menlo Park
number = 8910
name = Beth
place = Oregon
number = 80FD
name = Andrew
place = MountainView
number = 8955
name = Cooper
place = San Jose
number = 8910
name = David
place = San Jose
number = A33B
name = Beth
place = Oregon
number = 80FD
name = Elizabeth
place = Portland
number = 09FC
name =
place = Dallas
number = CC87
name = Anderson
place = Sunnyvale
number = 8755
我想提取名字:
我目前正在使用:
# Example case: when my_name = Beth.
my_name = 'Beth'
for line in text_op.splitlines():
if (re.search("name", line) and (len(line.split()) > 2)):
name = line.split()[2]
if (name != 'Beth' and not re.search("And", name)):
print(name)
有没有更好,更pythonic的方式来做到这一点。 ?
答案 0 :(得分:1)
要提取不以and
开头的名称,请使用此正则表达式:
name = ((?!and)\w+)
然后,您只需将其与my_name
进行比较。
my_name = 'Beth'
regex = re.compile(r'name = ((?!and)\w+)', re.IGNORECASE)
for line in text_op.splitlines():
match = regex.match(line)
if match:
name = match.group(1)
if name != my_name:
print(name)