如果它存在的话,Pythonic获取第三个单词的方法?

时间:2017-07-22 09:51:23

标签: python-3.x

我有一个大文本输出,如下所示:

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

我想提取名字:

  1. 来自行的名称字段,如果存在,
  2. 如果它不等于以'And'开头的单词。
  3. 并且不等于my_name中的当前值。
  4. 我目前正在使用:

    # 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的方式来做到这一点。 ?

1 个答案:

答案 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)